gpt4 book ai didi

java - 如何使用 java 在 elasticsearch 中进行 AND 多个 setQuery?

转载 作者:行者123 更新时间:2023-11-29 04:13:11 26 4
gpt4 key购买 nike

我正在尝试使用 elasticsearch 创建搜索过滤器的查询。我创建了根据搜索词、价格范围和品牌列表显示结果的查询。显示的搜索词和价格范围的结果是正确的,但是当提供品牌列表时,将显示与所选品牌相关的所有结果。

我想要 searchterm AND price AND brands 的结果

这是我的查询

BoolQueryBuilder query = QueryBuilders.boolQuery();
for (String key : brands) {
query.must(QueryBuilders.matchQuery("brand", key));
}

SearchResponse searchresponse = client
.prepareSearch("product")
.setTypes("product")
.setQuery(
QueryBuilders.matchPhraseQuery("name", pSearchTerm))
.setPostFilter(
QueryBuilders.rangeQuery("unit_price").from(min)
.to(max))
.setQuery(query).setExplain(true)
.execute().actionGet();

我做错了什么?

最佳答案

您有两个 setQuery() 调用,因此第二个调用覆盖了第一个调用。您需要像这样将所有约束合并到一个查询中:

// brand list
BoolQueryBuilder query = QueryBuilders.boolQuery();
for (String key : brands) {
query.must(QueryBuilders.matchQuery("brand", key));
}

// search term
query.must(QueryBuilders.matchPhraseQuery("name", pSearchTerm));

// price range
query.filter(QueryBuilders.rangeQuery("unit_price").from(min).to(max));

SearchResponse searchresponse = client
.prepareSearch("product")
.setTypes("product")
.setQuery(query)
.setExplain(true)
.execute().actionGet();

关于java - 如何使用 java 在 elasticsearch 中进行 AND 多个 setQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53884442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com