我的映射中有一个包含字符串数组的列
col1
["asd","fgh","wer"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk","fsdfd"]
["asd","trth","fdf"]
该列col
未在索引中分析,我不想更改映射。
"col1":
{
"type":"string",
"index":"not_analyzed"
}
现在,我想检索字符串asd
出现的所有记录。所以在这种情况下,我想要第一条和第四条记录。我尝试使用查询
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"]
所以现在,该数组包含一些包含多个单词的字符串。现在,我仍然想返回第一条和第四条记录。如果我使用我发布的解决方案,我只会得到第四个。如何将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"]
它返回第一条和第四条记录。但是,如果我有
col1
["fd asd","fgh bn","wer kl"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk wewe","fsdfd rtr"]
["asd","trth","fdf"]
然后,它再次只返回第四个,这是可以理解的,因为现在asd
不再是第一条记录中该值的前缀。
有没有办法进行contains
类型匹配而不仅仅是前缀匹配?