私は文書、フィールドでの各インデックスされている:私は、フィールド上の一致クエリを使用しようとするとelasticsearchに「接頭辞」と完全な文字列をマッチさせる方法はありますか?
document 1 has CodeName: "AAA01"
document 2 has CodeName: "AAA02"
document 3 has CodeName: "AAA03"
document 4 has CodeName: "BBB02"
:「コードネーム」次のような値を持っている
query: {
"match": {
"CodeName": "AAA"
}
}
私が期待します"AAA01"と "AAA02"の結果を取得しますが、代わりに空の配列を取得しています。私が "AAA01"(私は全部をタイプする)を渡すと、結果が得られます。より一般的に一致するようにするにはどうすればよいですか?私は "マッチ"の代わりに "接頭辞"を使用してみましたが、同じ問題を抱えています。
"CodeName"のマッピングは "type": "string"です。
ありがとう!いつこの上にnGramを使用したいですか? – Rolando
nGramは索引作成に時間がかかり、より多くの記憶域を必要としますが、同時にすべてのトークンが事前計算されているため、検索が高速になります。データセットが巨大で、 "AA"、 "AAA"、 "AAA0"、 "AAA01"などのトークンを複数組み合わせる必要がある場合は、nGramを使用すると意味があります。あなたのような限られたデータセットとシンプルな要件については、phrase_prefixは、通常は十分と簡単です。 – Ibrahim