嵌套弹性搜索2查询

时间:2016-11-16 21:43:54

标签: elasticsearch

我有一个名为'bundles'的嵌套对象,它通常包含多个对象。使用此查询,我可以成功查询bundle中对象的id,但是我无法编写可以查询多个id的查询。建议?

{
  "query": {
    "nested": {
      "path": "bundles",
      "query": {
        "bool": {
          "must": [
            {
              "match": {
                "bundles.id": 43273
              }
            }
          ]
        }
      },
      "inner_hits": {}
    }
  }
}

1 个答案:

答案 0 :(得分:0)

也许你想要"应该"而不是"必须"在布尔过滤器中。例如:

{
  "query": {
    "nested": {
      "path": "bundles",
      "query": {
        "bool": {
          "should": [
            {
              "match": {
                "bundles.id": 43273
              },
              {
              "match": {
                "bundles.id": 433373
              }
            }
          ]
        }
      }
    }
  }
}

如果字段可以完全匹配,您还可以使用术语查询。例如:

{
  "query": {
    "nested": {
      "path": "bundles",
      "query": {
        "bool": {
          "must": [
            {
              "terms": {
                "bundles.id": [1140000000, 114]
              }
            }
          ]
        }
      }
    }
  }
}'