問題タブ [elasticsearch-mapping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
elasticsearch - Elasticsearch マッピングに誤って追加された「クエリ」プロパティ
最近、私たちの ElasticSearch サーバーをバージョン 0.9 から 1.4 に更新しました。新しい ES のマッピングをインポートすると、これがマッピングに追加されていることがわかりました。
そのスニペットは、インポートしたマッピングには含まれていませんが、クエリを実行すると常に表示されますcurl -X GET localhost:9200/my_index/_mapping?pretty
。
他の誰かがこれを見たことがありますか?
java - マッピングされていないフィールドを持つ Elastic Search のフィルタリングされたエイリアス
filtered aliases
私は最近、Elastic Search (ドキュメントはこちら)をいじり始めましたが、どのようにアプローチすればよいかわからないユースケースがあります。
使用事例
ElasticSearch でファクトのインデックスを作成する各ドキュメントには、「tenantId」というフィールド (および「type」、「id」などの他のフィールド) があります。現在、すべてのドキュメントが同じインデックスに存在するため、テナントごとにフィルター処理されたエイリアスを作成する必要があります。ここで、テナント自体を作成し、「tenantId」を手元に置いたらすぐに、フィルタリングされたエイリアスを作成したいと考えています。
問題
Java クライアントを使用してプログラムでエイリアスを作成しようとすると、次の例外が発生します。
さらに調査したところ、これを達成するためにおそらく動的テンプレートを使用できることがわかりました。そこで、テンプレートを作成して に保存config/templates
し、インデックスを再作成して、同じことをもう一度試しました。同じ例外が再び発生しました。こちらのドキュメント(ページの下の 3 行) を読むと、次のプロパティindex.query.parse.allow_unmapped_fields
を true に変更しようとしても (まだ試していません)、フィルター処理されたエイリアスの場合、強制的に変更されることがわかりました。間違い。
ここで問題は、ユースケースにどのようにアプローチするかです。対応するタイプのマッピングはわかりませんが、事実として知っていることは、インデックスを作成する各ドキュメントには、タイプに関係なく、常にフィールドが呼び出されtenantId
、それに対してフィルター処理されたエイリアスを作成したいということです。
編集
私が見つけたいくつかの役立つリンク。これが修正されたバージョンがわからない。 テンプレート内のフィルタリングされたエイリアスは、エイリアス化されたインデックスからマッピングを継承しません #8473 index.query.parse.allow_unmapped_fields 設定は、エイリアス フィルタ内のマップされていないフィールドを許可していないようです #8431
2回目の編集
まったく同じ問題を抱えた ElasticSearch の未解決のバグが見つかりました。ES 開発者の応答を待っています。テンプレート マッピングを使用して空のインデックスにフィルター処理されたエイリアスを作成できない #10038
すべてのヘルプは非常に高く評価されています! 私は運がないので、数日からこれを理解しようとしています:(。
以下は、フィルタリングされたエイリアスを追加するために使用したコードと、デフォルトのマッピング json テンプレートです。
テンプレート
Javaクライアント
(「観測可能」関連のものは今のところ無視してかまいません)
elasticsearch - Elasticsearch のデフォルトのキーワード分析のオーバーライド
アナライザーによる分析のデフォルトのインデックス作成ポリシーを持つようにelasticsearchインデックスを構成しようとしていますkeyword
。次に、いくつかのフィールドでそれをオーバーライドして、それらをフリーテキスト分析できるようにします。したがって、フリー テキスト分析を効果的にオプトインします。ここでは、フリー テキスト マッチングのためにどのフィールドを分析するかをマッピングで明示的に指定しています。私のマッピング定義は次のようになります。
したがってstandard
、分析されたフィールドであるkeyword
必要があり、完全一致のみである必要があります。ただし、次のコマンドでサンプルデータを挿入すると:
次のクエリに対して一致が得られません。
ただし、次のものと一致します。
standard
これは、フィールドが分析されていないと私に思わせます。私が間違っていることを誰かが知っていますか?
elasticsearch - Elasticsearch インデックス テンプレートで日付フィールドを指定する
インデックス テンプレートを更新して、エポックと ISO8601 の日付形式を Elasticsearch のマッピング レベルで直接許可するようにしました。これにより、@timestamp フィールドがオーバーライドされます。これまでのところ、私は運がありませんでした。私のテンプレートはhttp://pastebin.com/1DCT6GfMで見ることができます。
基本的に、json ログが Logstash によって解析されると、Elasticsearch はそれらのフィールドを認識し、@timestamp フィールドを自動的に更新します。潜在的なログ イベントの例は次のとおりです。
{"timestamp_epoch": "1432146610", "message": "This is a test message to test epoch timestamp events", "category": "testing", "country": "EU"}
また
{"timestamp_iso8601": "2015-05-20T14:30:20-05:00", "message": "This is a test message to test epoch timestamp events", "category": "testing", "country": "US"}
timestamp_epoch
そのテンプレートの他のすべてのマッピングは、とを除いて正常に機能することに注意してくださいtimestamp_iso8601
。@timestamp が適切な値に更新されていないため、これら 2 つのマッピングが有効になっていないことがわかります。
生のサンプル Elasticsearch エントリのいくつかは、http: //pastebin.com/HmtmNNAbで確認できます。
timestamp_iso8601のタイプは に更新されていますが、@timestampdate
フィールドとtimestamp_epochが日付ではなく文字列に設定されていることを上書きしていません。
誰かが私が間違っていることを正確に明確にしていただければ幸いです。
ありがとう!
elasticsearch - Elasticsearch で動的キーのマッピングを作成する方法
次のようなドキュメントを配置した場合:
次に、次のようなマッピングを作成します。
「books」オブジェクトのプロパティ/キーは動的であり、マッピングは際限なく拡大します。ES が「books」のキーを見ないようにし、「books」の各値が同じタイプであることを理解させるにはどうすればよいですか? たとえば、マッピングには、書籍 ID ごとに新しいエントリを含めることはできません。
elasticsearch - not_analyzed と Analyzer を同じマッピングで使用するとどうなりますか?
私の知る限り、エラスティック検索マッピングでindex:not_analyzed
は、分析せずに値をそのままインデックス化することを意味します。
と
アナライザーを指定したい場合は、 を使用できますanalyzer:<some-analyzer>
。
同じフィールドに両方の設定を使用している人を見たことがあります
上記の設定の効果は何ですか、それは私には矛盾しているようです。何か不足していますか?
elasticsearch - Elasticsearch のネストされたオブジェクト
これは私のマッピング テンプレートです。
}
私の問題は、この集計で製品を検索するときです
}
このエラーが発生します。
どこが間違っているのか、わかりません。誰か助けてくれませんか