Stackのアップグレードに役立つヒントをご紹介します。ニュースパートナー投資家向け情報アワードElasticは検索会社です。これまでの歩みをご紹介します。Serviceをはじめましょう。私はElastic{ON}に参加して、出席者とフェイス・ツー・フェイスで質問に答える予定です。Elastic{ON}への参加をご検討ください。このイベントでお客様に会えることを期待しています。カレンダーをインデックスして、あるイベントの時間と競合する、他のすべてのイベントを検索できる状況を想像してください。世界中のテレビガイドを作成して、ショーや映画、スポーツなど、特定の期間内に放送される番組をすべて検索できる状況を想像してみてください。カタログを作成できる状況を想像してみてください。不連続から連続へ最近まで、こうした事例を、Elasticsearchの不連続なNumericやDateのフィールドを使用して規模に応じて解決するのは難易度が極端に高いか、不可能に近いものでした。クエリを実行することは最も典型的で、広く使用されている機能でした。その一方で、すぐに明らかになったのは、連続した範囲全体をインデックスし検索する機能を持つことは驚くほど対応しやすい特徴であるということです。Luceneが進歩したことにより、こうした希望がElasticsearchで現実のものになりました。Elasticsearchは、NumericとDateのRangeフィールドタイプを歓迎します。5.2が、次のような新しいRangeフィールドタイプに対応したことを、お知らせでき、うれしく思っています。integer_rangefloat_rangelong_rangedouble_rangedate_range上記の新しいRangeデータタイプのMappingは、不連続なNumericやDateと同様に動作します。以下では、IntegerとDateの両方の範囲が含まれているドキュメントType(「conference」)のMapping定義の例を紹介します。}}上記のMappingを使用してドキュメントをインデックスすることは、NumericやDateのRangeクエリで行うのと同じ方法でRangeフィールドを定義するのと同じくらい簡単なことです。DateのRangeクエリと同様に、DateのRangeフィールドのインデックスでは、同じ日付関数フォーマットも使用します。次の例は、integer_rangeやdate_rangeフィールドを使用したドキュメントのインデックスを示しています。ドメイン固有言語(DSL)の定義を使用します。このパラメータにより、ユーザーは、希望通りのRangeクエリのタイプを定義できます。(デフォルト)、CONTAINSまたはWITHINの1つとして定義され、他のBoolクエリと組み合わせて、必要としている異なる結果(たとえばDISJOINT)を実現することができます。次の例は、eventsインデックス全体に対するWITHINクエリを示しています。}}これらの新しいRangeに対応するものは、不連続なNumericやDateのフィールドと同じように、1次元のみに制限されます。将来は、この制限を引き上げて、8次元や4次元のそれぞれを処理できるように拡張することを検討しています。ついて説明するブログを公開しました。Structureに結実するNumericのインデックスや検索の技術的進歩を明かにしてくれます。Bkdの実装では、特にテキスト専用にチューニングされた構造を使用してNumericデータを連続して表現するのではなく、不連続の数値点のインデックスに特化した、はじめての柔軟なツリー構造を導入しました。DSLを使用して、これらの不連続点をElasticsearchで検索できるようになりました。コーデックフォーマットでは、高度な科学分析やデータ解析の事例に対して多次元でのサポートを提供し、Luceneに、そして最終的にはElasticsearchにRangeフィールド機能をもたらすために必要な基本的なクラスを提供することもできるようになりました。インデックスする解決方法はかなり平凡なものでした。Rangeを2次元点として表現します。2次元点でのエンコーディングは最小値dの配列として保存され、これに(次元ごとに)最大値Dの配列が続きます。Rangeフィールドは、最大4次元までの範囲のインデックスのみがサポートされます。次の画像は、Luceneの次元範囲のエンコーディングを簡単に図示したものです。実際には、1次元の範囲は、Luceneでは2次元点にしか見えません。したエンコーディングは、Bkdインデクサーに引き渡され、Bkdインデクサーはd*2次元点(dは範囲の次元)または上図のd*4次元点の階層ツリーの構築を進めます。次元範囲の検索の実装は、ユーザによって指定された検索範囲(ターゲット)とインデックスされた範囲(またはツリーの各レベルの最小境界範囲)の空間的リレーションを定義したり計算したりするといった重要なステップにまで昇華しました。これは、次元ごとに範囲リレーションを評価する次元範囲コンパレーターを実装することによって達成されます。Rangeクエリによって実装される空間的なリレーションには、INTERSECTS、CONTAINS、WITHINなどがあります。DISJOINTクエリは、MUST_NOT句をもつBoolクエリに含まれるINTERSECTSクエリを使用して実現します。多値フィールドでは、すべての値が互いに素の場合、ドキュメントはDISJOINTとしてのみ扱われます。CROSSESリレーションは現在、実装を検討中で、将来的に強化される機能として検討を進めています。次の画像は、2つのシンプルな1次元範囲間で算出されたリレーションを図示しています。この例では、白抜きの丸の範囲には、指定された値は含まれません。ピンク色の範囲はターゲット(クエリ)を表し、ターコイズ色はインデックスされた範囲を表します。試してみてください......特殊な事例を解決するために、NumericやDateのRangeのインデックスおよび検索が、ユニークでクリエイティブな方法で利用されることは、非常に刺激になります。githubページに関するフィードバック、提案、貢献をいただけることをいつでもお待ちしています。これらの新しいフィールド型がお客様のお役に立てれば幸いです。Foundationの商標です。