вот краткое изложение моих данных.
name: Parent1
children:
name:Child1
gender:M
favToy:Hammer
name: Parent2
children:
name:Child2
gender:M
favToy:Bottle
name:Child1
gender:M
favToy:Cloth
вот мой запрос, который я использую для составления списка
favToy где child.name = Child1.
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(
QueryBuilders.nestedQuery(
"customData",
new BoolQueryBuilder()
.must(QueryBuilders.termQuery("child.name", "Child1"))
.must(QueryBuilders.termQuery("child.gender", "M"))
, ScoreMode.None)
)
.withIndices(EVENT_INDEX_NAME).withTypes("parent")
.addAggregation(AggregationBuilders.terms("values").field("child.favToy"))
.build();
Список, который я получаю,
Hammer,
Bottle
Список, который я должен получить:
Hammer,
Cloth
Я думаю, что это происходит из-за того, что у Parent2 есть несколько дочерних объектов, и в агрегированных сегментах собирается неправильное значение favToy. Есть ли способ для меня, чтобы отфильтровать или использовать запрос с aggregationBuilder? или, возможно, другой метод агрегации я могу использовать здесь.