インデックスの再作成がオプションである場合は、マッピングを変更し、このフィールドをnot_analyzedとしてマークするのが最適です。
"your_field" : { "type": "string", "index" : "not_analyzed" }
フィールドの分析バージョンを保持する必要がある場合は、マルチフィールドタイプを使用できます。
"your_field" : {
"type" : "multi_field",
"fields" : {
"your_field" : {"type" : "string", "index" : "analyzed"},
"untouched" : {"type" : "string", "index" : "not_analyzed"}
}
}
このようにして、を使用your_field
してファセット検索を実行しながら、クエリで引き続き使用できますyour_field.untouched
。
または、このフィールドが保存されている場合は、代わりにスクリプトフィールドファセットを使用できます。
"facets" : {
"term" : {
"terms" : {
"script_field" : "_fields.your_field.value"
}
}
}
最後の手段として、このフィールドが保存されていないが、レコードソースがインデックスに保存されている場合は、次のことを試すことができます。
"facets" : {
"term" : {
"terms" : {
"script_field" : "_source.your_field"
}
}
}
最初の解決策が最も効率的です。最後の解決策は最も効率が悪く、大きなインデックスでは多くの時間がかかる可能性があります。