Задать вопрос
  • Как отфильтровать вложенный object в ES?

    @bujanov Автор вопроса
    Алексей Черемисин: Не, если ложить Terms рядом с Filter, тогда неправильно работает. А если вкладывать aggs друг в друга, то всё работает.

    Запрос:
    {
      "query": {
        "bool": {
          "filter": [
            {
              "ids": {
                "values": [
                  "72daaf06-3448-4edf-b627-0a37de5ec364",
                  "517faca7-fd89-4f63-a536-9b4a6801876f",
                  "45b3f8e1-0ced-427a-94de-e8a73b0fa633"
                ]
              }
            }
          ]
        }
      },
      "aggs": {
        "nested_agg": {
          "nested": {
            "path": "options"
          },
          "aggs": {
            "filter_agg": {
              "filter": {
                "term": {
                  "options.option.name": "color"
                }
              },
              "aggs": {
                "terms_agg": {
                  "terms": {
                    "field": "options.valueString"
                  }
                }
              }
            }
          }
        }
      }
    }


    Результат:
    {
      "nested_agg": {
        "doc_count": 15,
        "filter_agg": {
          "doc_count": 3,
          "terms_agg": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
              {
                "key": "Лазурный",
                "doc_count": 1
              },
              {
                "key": "Морковный",
                "doc_count": 1
              },
              {
                "key": "Хаки",
                "doc_count": 1
              }
            ]
          }
        }
      }
    }


    Спасибо за помощь!!! Сам бы вообще не додумался))) Хотя просто всё оказалось)))
  • Как отфильтровать вложенный object в ES?

    @bujanov Автор вопроса
    Алексей Черемисин: Т.е. Я сначала делаю nested агрегацию потом в неё вкладываю filter агрегацию, а в filter я вкладываю агрегацию с terms. Так получается?
  • Как отфильтровать вложенный object в ES?

    @bujanov Автор вопроса
    {
      "query": {
        "bool": {
          "filter": [
            {
              "ids": {
                "values": [
                  "423d8f78-6088-4c55-99a8-af2dedcb5c5c",
                  "7afbbb44-7bb4-45fb-b3e3-73409a62d23a",
                  "d48efb3b-6b68-446f-808d-0cced893093b"
                ]
              }
            }
          ]
        }
      },
      "aggs": {
        "list": {
          "filter": {
            "term": {
              "properties.property.name": "color"
            }
          },
          "aggs": {
            "val": {
              "terms": {
                "field": "properties.valueString"
              }
            }
          }
        }
      }
    }


    Это мой реальный запрос, поля отличаются от тех, что в примере выше.
    options - это properties,
    option - это property
    value - это valueString

    для properties установил type nested
  • Как отфильтровать вложенный object в ES?

    @bujanov Автор вопроса
    Что то нет( Совсем нечего не возвращает(