У меня есть 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"
}
}