Отобразить количество вложенных объектов в запросе ElasticSearch - PullRequest
0 голосов
/ 12 марта 2019

Я хотел бы получить все документы, которые соответствуют моим критериям поиска, и отсортировать их по количеству вложенных объектов в определенном поле.Я хотел бы также показать номер счета.У меня первая работает, но мне сложно разобраться, как это сделать.

Вот мой запрос:

GET _search
{
  "_source": "nested_objects",
  "query": {
    "bool": {
      "must": [
        {"nested" : {
            "path" : "nested_objects",
            "query" : {
                "bool" : {
                    "should" :[
                      {"term" : {"nested_objects.is_active": true}}
                    ]
                }
            },
            "score_mode": "sum"
        }}
      ]
    }
  }
}

Это показывает результат как:

"_source": {
  "nested_objects": [
    {
      "is_active": true
    },
    ...
  ]
}

Однако мне нужно, чтобы вывод был таким:

"_source": {
  "size": 4,
  "nested_objects": [
    {
      "is_active": true
    },
    {
      "is_active": true
    }, 
    {
      "is_active": true
    },
    {
      "is_active": true
    } 
   ]
 }

Есть идеи, как получить размер, отображаемый в запросе?

Заранее спасибо.

1 Ответ

0 голосов
/ 12 марта 2019

Похоже, все, что мне нужно было добавить "inner_hits": {} под моим вложенным запросом:

GET _search
{
  "_source": "innert_hits",
  "query": {
    "bool": {
      "must": [
        {"nested" : {
            "path" : "nested_objects",
            "query" : {
                "bool" : {
                    "should" :[
                      {"term" : {"nested_objects.is_active": true}}
                    ]
                }
            },
            "inner_hits": {},
            "score_mode": "sum"
        }}
      ]
    }
  }
}

Он не возвращает результат, как я хотел в моих вышеупомянутых требованиях, но он достаточно хорош для моего варианта использования.

...