在Elasticsearch中查询多字段以进行精确字符串匹配

时间:2016-01-19 09:13:19

标签: python elasticsearch

我在Elasticsearch中有一个带有以下映射的字符串字段

"part_number":{"type":"string"}

由于我想在这个字段上进行精确字符串搜索,我添加了一个额外字段,即not analyzed

{
  "properties": {
    "part_number": {
      "type": "string",
      "fields": {
        "raw": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}

现在,当我查询part_number.raw字段时,Elasticsearch会返回结果。

_search?fields=part_number.raw&q=part_number:abc-000123

但是如何查询part_number.raw字段。我想做像

这样的事情
_search?fields=part_number.raw&q=part_number.raw:abc-000123

但是这个查询会返回空命中。

我正在使用python弹性客户端。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您要查询part_number.raw字段,则需要发送exact match查询,即包含转义双引号。

_search?fields=part_number.raw&q=part_number.raw:\"abc-000123\"
                                                  ^           ^
                                                  |           |
                                                add double quotes