ElasticSearch GET与POST搜索Querystring的结果

时间:2016-02-05 22:33:17

标签: elasticsearch

为什么我会为这两种类型的查询获得不同的结果。第一个查询返回17个结果,而第二个查询返回300多条记录。

还尝试将第二个字符串的查询值设置为“A& B”,看到相同的结果差异。

GET

GET  dev/data,legacyData/_search?q="A%26B"

POST

POST dev/data,legacyData/_search
{
   "from": 0,
   "size": 1000,
   "query": {
      "query_string": {
         "query": "A&B"
      }
   }
}

1 个答案:

答案 0 :(得分:1)

在GET q查询中使用双引号时,

它表示它是精确过滤器

GET  dev/data,legacyData/_search?q="A%26B"

等效的POST查询是

POST dev/data,legacyData/_search
{
   "from": 0,
   "size": 1000,
   "query": {
      "query_string": {
         "query": "\"A&B\""
      }
   }
}

请尝试以下

GET  dev/data,legacyData/_search?q=A%26B

POST dev/data,legacyData/_search
{
   "from": 0,
   "size": 1000,
   "query": {
      "query_string": {
         "query": "A&B"
      }
   }
}

你会得到相同的结果