ajax - Elasticsearch:包含查询

标签 ajax elasticsearch elasticsearch-2.0

我的映射中有一列,其中包含一个字符串数组

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/

相关文章:

javascript - 显示页面其他位置的 JavaScript 隐藏元素

javascript - 通过 jQuery ajax 使用 Coldfusion 删除文件

javascript - jQuery .done() .fail()

laravel - Laravel 5-具有(重新)映射的Elasticquent/ElasticSearch Missing404Exception

python-3.x - Python CGI的Elasticsearch circuit_breaking_exception问题

elasticsearch - Nest 2,Elasticsearch 2.3中的FuzzyMinimumSimilarity的替代品是什么?

ajax - WordPress 前端 AJAX 表单提交给出 500 内部服务器错误

scala - Spark + ElasticSearch 返回 RDD[(String, Map[String, Any])]。我怎样才能操纵Any?

elasticsearch - Elasticsearch 集群级分析器

elasticsearch - 如果具有_primary_shard优先级的GET请求落在仅具有副本分片的节点上,该怎么办?