Поиск по внутреннему полю в Elasticsearch - PullRequest
0 голосов
/ 10 января 2020

Структура:

{
    .................
    "mp": "CAR",
    "nPhoto": 1,
    "items": [
  {
    "availableQuantity": 3,
  },
        {
    "availableQuantity": 0,
  },
  {
    "availableQuantity": 0,
  }
    ],
    ............................
  }
}

Если я отфильтрую по полю mp, я сгенерирую следующий запрос:

GET catalog / _search

{
  "from" : 0,
  "size" : 0,
  "aggregations" : {
    "brand" : {
      "filter" : {
        "bool" : {
          "must" : {
            "term" : {
              "mp" : "CAR"
            }
          }
        }
      },
      "aggregations" : {
        "photosQuantity" : { "sum" : { "field" : "nPhoto" } }
      }
    }
  }
}

Но как сгенерировать запросить, нужно ли фильтровать по полю availableQuantity, где availableQuantity> 0 хотя бы один из элементов?

1 Ответ

1 голос
/ 10 января 2020

Что вам, вероятно, нужно - это вложенный запрос в части фильтра.

что-то вроде этого:

{
  "from": 0,
  "size": 0,
  "aggregations": {
    "brand": {
      "filter": {
        "nested": {
          "path": "items",
          "query": {
            "range": {
              "items.availableQuantity": {
                "gte": 0
              }
            }
          }
        }
      },
      "aggregations": {
        "photosQuantity": {
          "sum": {
            "field": "nPhoto"
          }
        }
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...