elasticsearch,Arrays,elasticsearch" /> elasticsearch,Arrays,elasticsearch" />

Arrays Elasticsearch查询相同数组

Arrays Elasticsearch查询相同数组,arrays,elasticsearch,Arrays,elasticsearch,我有这样的文件: Doc1 { "id": ..., ... "articles": [ { "id": "5cdd17c7e24f6e05d487b2c2#142936", ... }, { "id": "5cdd17c7e24f6e05d487b2c2#226536", ... } ... } Doc2 { "id

我有这样的文件:

Doc1

{
"id": ...,
...
"articles": [
  {
    "id": "5cdd17c7e24f6e05d487b2c2#142936",
    ...
  },
  {
    "id": "5cdd17c7e24f6e05d487b2c2#226536",
    ...
  }
...
}
Doc2

{
"id": ...,
...
"articles": [
  {
    "id": "5cdd17c7e24f6e05d487b2c2#142936",
    ...
  },
  {
    "id": "5cdd17c7e24f6e05d487b2c2#226536",
    ...
  },
  {
    "id": "5cdd17c7e24f6e05d487b2c2#142965",
    ...
  }
...
}
Doc3

{
"id": ...,
...
"articles": [
  {
    "id": "5cdd17c7e24f6e05d487b2c2#142936",
    ...
  }
...
}
我希望文档中有我需要的文章。例如,如果我的文章ID数组是['5cdd17c7e24f6e05d487b2c2#142936','5cdd17c7e24f6e05d487b2c2#226536'],我只想得到Doc1

现在我有一个问题:

GET my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "articles",
            "query": {
              "query_string": {
                "default_field": "articles.id",
                "query": "5cdd17c7e24f6e05d487b2c2#142936 AND 5cdd17c7e24f6e05d487b2c2#226536"
              }
            }
          }
        }
      ]
    }
  }
}

但是有了这个,我得到了Doc1和Doc2…

假设
articles.id
关键字的类型,我认为这应该适合您(不确定这是编写查询的最有效方式):


完美的非常感谢。
GET my_index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "nested": {
            "path": "articles",
            "query": {
              "term": {
                "articles.id": "5cdd17c7e24f6e05d487b2c2#142936"
              }
            }
          }
        },
        {
          "nested": {
            "path": "articles",
            "query": {
              "term": {
                "articles.id": "5cdd17c7e24f6e05d487b2c2#226536"
              }
            }
          }
        }
      ],
      "must_not": {
        "nested": {
          "path": "articles",
          "query": {
            "query_string": {
              "default_field": "articles.id",
              "query": "NOT 5cdd17c7e24f6e05d487b2c2#142936 AND NOT 5cdd17c7e24f6e05d487b2c2#226536"
            }
          }
        }
      }
    }
  }
}