マッピングに、文字列の配列を保持する列があります
col1
["asd","fgh","wer"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk","fsdfd"]
["asd","trth","fdf"]
列col
はインデックスで分析されておらず、マッピングを変更したくありません。
"col1":
{
"type":"string",
"index":"not_analyzed"
}
今、文字列が表示されるすべてのレコードを取得したいと思いasd
ます。この場合、1 番目と 4 番目のレコードが必要です。クエリを使ってみた
query: {
wildcard:{
"col1":"asd"
}
}
と
POST localhost:9200/indexName/test/_search
しかし、それは私に空の結果をもたらしますか? この場合、どのクエリを使用すればよいですか?
編集
それで、上記の問題を解決することができました。ここにフォローアップがあります。これが私のデータだったと考えてください
col1
["asd fd","fgh bn","wer kl"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk wewe","fsdfd rtr"]
["asd","trth","fdf"]
そのため、配列には複数の単語を持つ文字列が含まれています。今でも、最初と 4 番目のレコードを返したいと思っています。投稿したソリューションを使用すると、4番目のソリューションしか取得できません。contains
の配列の各要素にロジックを適用するにはどうすればよいcol1
ですか?
ノート
部分的な解決策は
{ "query": { "match_phrase_prefix": { "col1": "asd" } } }
繰り返しますが、データについて
col1
["asd fd","fgh bn","wer kl"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk wewe","fsdfd rtr"]
["asd","trth","fdf"]
最初と 4 番目のレコードを返します。しかし、私が持っている場合
col1
["fd asd","fgh bn","wer kl"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk wewe","fsdfd rtr"]
["asd","trth","fdf"]
その後、再び 4 番目のもののみが返されますが、これは理解できるようにasd
なり、最初のレコードのその値のプレフィックスではなくなりました。
contains
プレフィックスマッチだけでなく、タイプマッチにする方法はありますか?