Запрос эластичного поиска для условия AND для двух свойств вложенного объекта - PullRequest
0 голосов
/ 11 января 2019

У меня есть post_filter, как показано ниже, где я пытаюсь отфильтровать записи с именем школы HILL SCHOOL AND , содержащие вложенный дочерний объект с именем JOY AND , раздел A.

школа присутствует в родительском объекте, который содержит дочерний список вложенных объектов.

Все вышеперечисленное является условием AND.

Но, похоже, запрос не работает. Есть идеи почему? И есть ли способ объединить два вложенных запроса?

GET /test_school/_search
{
"query": {
"match_all": {}
},
"post_filter": {
"bool": {
  "must_not": [
    {
      "bool": {
        "must": [
          {
            "term": {
              "schoolname": {
                "value": "HILL SCHOOL"
              }
            }
          },
          {
            "nested": {
              "path": "children",
              "query": {
                "bool": {
                  "must": [
                    {
                      "match": {
                        "name": "JACK"
                      }
                    }
                  ]
                }
              }
            }
          },
          {
            "term": {
              "children.section": {
                "value": "A"
              }
            }
          }
        ]
      }
    }
  ]
}
}
}

Схема как ниже:

PUT /test_school
{
  "mappings": {
"_doc": {
  "properties": {
    "schoolname": {
      "type": "keyword"
    },
    "children": {
      "type": "nested",
      "properties": {
        "name": {
          "type": "keyword",
          "index": true
        },
        "section": {
          "type": "keyword",
          "index": true
        }
      }
    }
  }
}
  }
}

Пример данных, как показано ниже:

POST /test_school/_doc
{
"schoolname":"HILL SCHOOL",
"children":{
"name":"JOY",
"section":"A"
}
}

вторая запись

POST /test_school/_doc
 {
"schoolname":"HILL SCHOOL",
"children":{
"name":"JACK",
"section":"B"
  }
}

1 Ответ

0 голосов
/ 17 января 2019

https://stackoverflow.com/a/17543151/183217 предполагает, что для работы с вложенными объектами требуется специальное отображение. Вы, кажется, падаете из-за проблемы "сопоставления перекрестных объектов".

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