使用AND运算符的基于Elasticsearch URI的查询

时间:2012-12-05 05:12:37

标签: elasticsearch

如何在基于URI的查询中指定AND操作?我正在寻找类似的东西:

http://localhost:9200/_search?q="profiletype:student AND username:s*"

4 个答案:

答案 0 :(得分:21)

根据文档,它应该按照您的描述工作。见http://www.elasticsearch.org/guide/reference/query-dsl/query-string-query.html

也就是说,你也可以使用以下内容:

http://localhost:9200/_search?q="+profiletype:student +username:s*"

答案 1 :(得分:17)

对于ElasticSearch中的URI search,您可以使用AND运算符profiletype:student AND username:s,正如您所说,但没有引号:

  _search?q=profiletype:student AND username:s*

您还可以将默认运算符设置为AND

  _search?q=profiletype:student username:s*&default_operator=AND

或者,您可以将+ operator用于必须存在的字词,即可以使用+profiletype:student +username:s作为查询字符串。但是,如果没有URL编码,这将不起作用。在网址编码中,+%2B,空格为%20,因此替代方案为

  _search?q=%2Bprofiletype:student%20%2Busername:s*

答案 2 :(得分:4)

你可以尝试下面的行。

http://localhost:9200/_search?q=profiletype:student%20AND%20username:s*

http://localhost:9200/_search?q=profiletype:student AND username:s*

答案 3 :(得分:1)

我必须结合使用默认运算符和+符号才能使其正常工作

curl -XGET 'localhost:9200/apm/inventory/_search?default_operator=AND&q=tenant_id:t2+_all:node_1'