我的映射中有一列,其中包含一个字符串数组
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
类型匹配,而不仅仅是前缀匹配?
最佳答案
您可以使用一个简单的term
查询,它应该可以工作
POST localhost:9200/indexName/test/_search
{
"query": {
"terms": { "col1" : "asd" }
}
}
关于ajax - Elasticsearch:包含查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35486146/