这个弹性查询的作用是什么?

时间:2017-04-10 20:04:12

标签: elasticsearch

我正在执行以下查询,我希望它能够获取包含关键字“images”的所有文档,并且属于类别1857或1859.但是结果数量明显高于预期的数量。如果不是我认为的那样,这个查询会做什么?

{
"query": {
"bool": {
  "must": [
    {
      "terms": {
        "category_id": [1857, 1859]
      }
    },
    {
      "match": {
        "_all": {
          "query": "images"
        }
      }
    }
  ]
}
}
}

1 个答案:

答案 0 :(得分:0)

它应该如您所描述的那样工作:它返回category_id具有术语1857或1859且至少一个字段具有images术语的文档。换句话说,它匹配以下表达式:(category_id in (1857, 1859)) and _all = 'images'

由于您无法提供错误匹配文档的示例,请尝试使用explain querystring参数运行查询,或将其作为字段添加到正文中,如下所示

{
    "explain": true,
    "query": {
        "bool": {
            "must": [
                {
                    "terms": {
                        "category_id": [
                            1857,
                            1859
                        ]
                    }
                },
                {
                    "match": {
                        "_all": {
                            "query": "images"
                        }
                    }
                }
            ]
        }
    }
}