Как создать фильтр ElasticSearch для двух вложенных объектов, чтобы результаты включали только документы, соответствующие обоим условиям - PullRequest
0 голосов
/ 05 ноября 2019

Как создать запрос фильтра ElasticSearch для вложенных объектов, чтобы результаты соответствовали обоим?

У меня есть документы, которые включают вложенные объекты, такие как:

    {
        "objectNumber": "1",
        "nestedObjects": [
            {
                "category": "position",
                "tag": "2300"
            },        
            {
                "category": "scope",
                "tag": "External"
            }  

            ]
    }

{

    "objectNumber": "2",
    "nestedObjects": [
        {
            "category": "position",
            "tag": "2300"
        },        
        {
            "category": "scope",
            "tag": "Internal"
        }  

        ]
}

{

    "objectNumber": "3",
    "nestedObjects": [
        {
            "category": "position",
            "tag": "2300"
        },        
        {
            "category": "scope",
            "tag": "Internal"
        }  

        ]
}

И я хотел бы выполнить запрос, который возвращает только документы, которые имеют вложенный объект с category=position и tag=2300 И вложенный объект с category=scope и tag=Internal. objectNumber 2 и 3, но не 1.

Я дошел до этого:

{
  "query": {
    "nested": {
      "path": "tags",
      "query": {
        "bool": {
          "should": [
            {
              "bool": {
                "filter": [
                  {
                    "match": {
                      "tags.category": "position"
                    }
                  },
                  {
                    "match": {
                      "tags.tag": "2200"
                    }
                  },
                  {
                    "match": {
                      "tags.category": "scope"
                    }
                  },
                  {
                    "match": {
                      "tags.tag": "Internal"
                    }
                  }
                ]
              }
            }

          ]
        }
      }
    }
  }
}

, который возвращает все 3 объекта, а не только 2 и 3. Любая помощь будетс благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...