Отображение родительской информации для ответа inner_hits - PullRequest
0 голосов
/ 28 февраля 2019

Извинения, конфиги делают этот вопрос довольно длинным

У меня есть схема, которая выглядит примерно так:

{
    "mappings": {
        "mytype": {
            "properties": {
                "event_datetime": {"type": "date"},
                "elements": {
                    "type": "nested",
                    "properties": {
                        "name": {"type": "keyword"},
                        "id": {"type": "text"},
                        "type": {"type": "keyword"},
                        "content": {
                            "type": "nested",
                            "properties": {
                                "html": {"type": "text"},
                                "label": {"type": "keyword"},
                                "text": {"type": "text"},
                                "title": {"type": "text"}
                            }
                        }
                    }
                }
            }
        }
    }
}

Я хочу найти записи, гдеelements.content.html содержит, скажем, http:

{
    "_source": ["event_datetime"],
    "query": {
        "nested": {
            "path": "elements.content",
            "query": {
                "wildcard": {"elements.content.html": "*http*"}
            },
            "inner_hits": {}
        }
    }
}

Так выглядит соответствующая часть ответа

"_source": {
    "event_datetime": "2019-01-22T05:24:21"
},
"inner_hits": {
    "elements.content": {
        "hits": {
            "total": 1,
            "max_score": 1,
            "hits": [{
                "_index": "my_index",
                "_type": "mytype",
                "_id": "ABC",
                "_nested": {
                    "field": "elements",
                    "offset": 73,
                    "_nested": {
                        "field": "content",
                        "offset": 0
                    }
                },
                "_score": 1,
                "_source": {
                    "html": "blah https blah"
                }
    }...}

Что бы я хотел

Я бы хотел, чтобы в ответ включили elements.type.

Я пробовал разные варианты добавления "_source" : ["elements.content.html", "elements.type"] на разные уровни, но не понял, как получить elements.type информация, прикрепленная к объекту ответа ( где-то , на самом деле все равно, где, пока он прикреплен и легко перемещается).

1 Ответ

0 голосов
/ 28 февраля 2019

Для этого вам нужно inner_hits на родительском уровне, т.е. на уровне elements.Поэтому вы можете перефразировать свой запрос, как показано ниже, который является вложенным запросом внутри вложенного запроса.

{
  "_source": [
    "event_datetime"
  ],
  "query": {
    "nested": {
      "path": "elements",
      "inner_hits": {
        "_source": [
          "elements.type",
          "elements.content.html"
        ]
      },
      "query": {
        "nested": {
          "path": "elements.content",
          "query": {
            "wildcard": {
              "elements.content.html": "*http*"
            }
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...