什么弹性搜索请求体等同于URI搜索?

时间:2016-01-29 19:04:49

标签: elasticsearch

如果我使用网址发出请求:

http://myserver/stuff/stuff/_search?q=TEST

那么在没有查询字符串的情况下,我将POST到该端点的等效文档是什么?

我试过了:

{
  query: {
    term: { "_all": "TEST" }
  }
}

但是我们的索引如何设置,这不会返回任何内容(但?q=TEST确实如此)。 The most basic search example in the API指定要搜索的字段,我不想这样做。我希望搜索为开放式和不受限制的,就像我使用了查询字符串一样。

2 个答案:

答案 0 :(得分:2)

正如official documentation中所述,URI搜索查询字符串查询(即q=...)相当于在正文中发送query_string查询。

所以这个

curl -XGET http://myserver/stuff/stuff/_search?q=TEST

等同于此

curl -XPOST http://myserver/stuff/stuff/_search -d '{
    "query": {
        "query_string": {
            "query": "TEST"
        }
    }
}'

两个查询都默认搜索_all字段,这就是您想要的。

答案 1 :(得分:0)

  

q是查询字符串(映射到query_string查询,请参阅查询   字符串查询以获取更多详细信息。

来自文档。

https://www.elastic.co/guide/en/elasticsearch/reference/2.x/search-uri-request.html

这是相应的查询DSL:

{
  query: {
    "query_string": { "_all": "TEST" }
  }
}

也相关:

  

如果未指定前缀字段,则查询字词的默认字段。   默认为index.query.default_field索引设置,其中包含   将默认值设为_all。