Проблема с преобразованием запроса ES для сортировки вложенных объектов по ключу и значению в API Java (версия ES 6.2) - PullRequest
0 голосов
/ 15 апреля 2019

Я хотел бы преобразовать приведенный ниже запрос ES в Java API

{
  "sort": [
{
  "nested_objects.Value": {
    "order": "desc",
    "nested_path": "nested_objects",
    "nested_filter": {
      "term": { "nested_objects.Key": "abc" }
      }
     }
   }
  ]
}

Пытался написать запрос, как показано ниже, но похоже, что ранее работающие методы устарели в ES 6.2

FieldSortBuilder mySort = SortBuilders.fieldSort("nested_objects.Value")
                .setNestedFilter(QueryBuilders.nestedQuery("nested_objects",
                        QueryBuilders.termQuery("nested_objects.Key", "abc"), ScoreMode.Avg))
                .order(SortOrder.DESC);

setNestedFilter () устарела, есть альтернативы?

1 Ответ

0 голосов
/ 15 апреля 2019

Я скопировал приведенный ниже текст из этой устаревшей ссылки списка

org.elasticsearch.search.sort.FieldSortBuilder.getNestedFilter()
set nested sort with FieldSortBuilder.setNestedSort(NestedSortBuilder) and retrieve with FieldSortBuilder.getNestedSort()

org.elasticsearch.search.sort.FieldSortBuilder.getNestedPath()
set nested sort with FieldSortBuilder.setNestedSort(NestedSortBuilder) and retrieve with FieldSortBuilder.getNestedSort()

Вы можете видеть, как они упоминали, что вам нужно будет использовать NestedSortBuilder

Ниже то, что вы можете сделать.Просто создайте Term Query, используя QueryBuilder, и используйте его в setFilter методе, связывающем с setNestedSort.

    QueryBuilder query = QueryBuilders.boolQuery()
            .must(QueryBuilders.termQuery("nested_objects.Key", "abc"));

    FieldSortBuilder mySort = SortBuilders.fieldSort("nested_objects.Value")
            .order(SortOrder.DESC)
            .setNestedSort(new NestedSortBuilder("nested_objects")
            .setFilter(query));

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...