Elastic Search Pick элементы из поля массива - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть данные в указанном ниже формате в упругом поиске.

{
"fname": "FN1",
  "lname": "LN1",
  "images": [
    {
      "type": "passport",
      "url": ".."
    },
    {
      "type": "full",
      "url": ".."
    },
    {
      "type": "full",
      "url": ".."
    }
    ]
}

При извлечении данных из упругого поиска можно ли выборочно выбирать элементы из поля массива, например, можно ли включать толькообъекты с type = "passport" в массиве изображений?

1 Ответ

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

Вложенные внутренние попадания могут прийти вам на помощь, но по названию предполагает, что тип данных поля, с которым вы имеете дело, должен быть nested.Предполагая, что тип данных изображений полей - nested, вы можете фильтровать на основе images.type и использовать nested_hits, чтобы возвращать только совпадающие вложенные документы.

Таким образом, запрос выглядит так:

{
  "query": {
    "bool": {
      "filter": [
        {
          "nested": {
            "path": "images",
            "query": {
              "term": {
                "images.type": "passport"
              }
            },
            "inner_hits": {}
          }
        }
      ]
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...