Elasticsearchインデックスに複数のフィールドを持つドキュメントを追加すると、Kibanaでそれを表示すると、同じフィールドが2回表示されます。それらの1つが呼び出されます
some_field
もう一つは呼ばれます
some_field.keyword
この動作はどこから来て、両方の違いは何ですか?
PS:そのうちの1つは集約可能であり(意味がわからない)、もう1つは集約できません(キーワードなし)。
Update:短い答えは、そのタイプです:テキストは分析されます、つまり、それはに分割されます保存されている場合は個別の単語。フィールド内の1つまたは複数の単語をフリーテキスト検索できます。 .keywordフィールドは同じ入力を受け取り、1つの大きな文字列として保持されます。つまり、集約できるため、ワイルドカード検索を使用できます。集約可能とは、elasticsearchの集約で使用できることを意味します。これは、SQLグループに似ているため、SQLグループに似ています。 Kibanaでは、.keywordフィールドを集計で使用して、個別の値などをカウントします。
text
vs. keyword
に関するこの記事をご覧ください。
簡単に言うと、Elasticsearch 5.0以降、string
型はtext
およびkeyword
型に置き換えられました。それ以来、明示的なマッピングを指定しない場合、文字列を含む単純なドキュメントの場合:
{
"some_field": "string value"
}
以下の動的マッピングが作成されます:
{
"some_field": {
"type" "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
その結果、
some_field
で全文検索を実行したり、some_field.keyword
フィールドを使用してキーワード検索や集計を実行したりすることができます。
これがあなたの質問に答えてくれることを願っています。
this 問題を見てください。その中にあなたの質問のいくつかの説明があります。大ざっぱに言えば some_field
は分析され、全文検索に使用できます。一方 some_field.keyword
は分析されず、用語クエリまたは集計で使用できます。