Я пытаюсь отправить логический запрос к моему эластичному поиску, который отфильтровывает документы. Как я могу фильтровать логические выражения, такие как (A AND B AND C) AND (D OR E OR F) AND G с помощью BooleanQueryBuilder Api в Java? Я пробовал с методом фильтра, но я не получаю никаких результатов. Например:
Представьте, что A, B, C, D, E, F, G — это события, где атрибут «имя» должен соответствовать, например, «Робин».
private QueryBuilder getQueryBuilder() {
BoolQueryBuilder boolQueryBuilder1 = QueryBuilders
.boolQuery()
.filter(QueryBuilders.matchQuery(D).operator(Operator.OR))
.filter(QueryBuilders.matchQuery(E).operator(Operator.OR))
.filter(F);
BoolQueryBuilder boolQueryBuilder2 = QueryBuilders
.boolQuery()
.filter(QueryBuilders.matchQuery(A).operator(Operator.AND))
.filter(QueryBuilders.matchQuery(B).operator(Operator.AND))
.filter(QueryBuilders.matchQuery(C));
BoolQueryBuilder boolQueryBuilder3 = QueryBuilders
.boolQuery()
.filter(G);
BoolQueryBuilder boolQueryBuilder = QueryBuilders
.boolQuery()
.filter(boolQueryBuilder1)
.filter(boolQueryBuilder2)
.filter(boolQueryBuilder3);
return boolQueryBuilder;
}
Я знаю, что этот пример не очень хорош, но я надеюсь, что вы можете мне помочь! Спасибо!