Elasticsearch Java API 5.4 — как получить внутренние совпадения вложенного запроса?

Недавно я начал переходить с Elasticsearch версии 2.4 на версию 5.4. В версии 2.4 я реализовал некоторые вложенные запросы, включая внутренние обращения, используя официальный Java API, которые больше не работают в версии 5.4.

Может ли кто-нибудь сказать мне, как получить внутренние совпадения вложенного запроса с помощью Elasticsearch Java API 5.4? К сожалению, я не могу найти никаких источников по этой теме, даже в документации Elasticsearch.

Мой функционирующий вложенный запрос в версии 2.4:

QueryBuilders.nestedQuery("classes.links",
    QueryBuilders.boolQuery()
        .must(QueryBuilders.termQuery("classes.links.name", "xyz"))
).innerHit(new QueryInnerHitBuilder())

Моя попытка заставить этот запрос работать в версии 5.4:

QueryBuilders.nestedQuery("classes.links",
    QueryBuilders.boolQuery()
        .must(QueryBuilders.termQuery("classes.links.name", "xyz")), 
    ScoreMode.Avg
).innerHit(new InnerHitBuilder()) //Error here

Как предлагается здесь Elastic Search - java API для внутреннего попадания, я попытался заменить QueryInnerHitBuilder() на InnerHitBuilder(), но это все равно не работает. Я получаю следующую ошибку:

"Не удается разрешить метод 'innerHit(org.elasticsearch.index.query.InnerHitBuilder)'"


person The_Dude    schedule 22.06.2017    source источник
comment
Вы в итоге решили свою проблему? Это поможет другим, если вы дадите ответ.   -  person Christopher Grigg    schedule 28.02.2020


Ответы (1)


Приведенная ниже реализация работала для меня.

внутреннийHit(новый InnerHitBuilder())

person Arun    schedule 18.02.2021