如何匹配elasticsearch中的两个精确值

时间:2017-06-29 18:28:49

标签: elasticsearch

我想获取与给定的两个术语完全匹配的所有文档,即 id = 100 AND name = xyz

我的查询

query: {
    constant_score: {
      filter: {
        bool: {
          must: [
             { term: { id: '100' } },
             { term: { name: 'xyz' } },
          ],
        },
      },
    },
  }

但是这会给出所有匹配id或name或两者的文档。 我只想要那些匹配这两个属性的文档,它们应该完全匹配。

我该怎么做?

我抬头看了看。 elasticsearch

提前致谢。

编辑

ES版本 - 2.1.1

2 个答案:

答案 0 :(得分:0)

这应该这样做:

{
    "query": {
        "bool": {
            "must": [
                {"match": {"id": "100"}},
                {"match": {"name": "XYZ"}}
            ]
        }
    }
}

答案 1 :(得分:0)

{
    "query": {
        "bool": {
            "must": [
                {"match": {"id": "100"}},
                {"match": {"name": "XYZ"}}
            ]
        }
    }
}

上面的代码应该可以解决问题。如果这不起作用,则index_option或分析器设置可能有问题。你能把你的映射吗?

相关问题