gpt4 book ai didi

java - 2带有查询的过滤器在ElasticSearch中不起作用,Java

转载 作者:行者123 更新时间:2023-12-02 22:40:42 28 4
gpt4 key购买 nike

这是我的旧代码,可以正常工作

qb = QueryBuilders.queryString(query.replaceAll(" ", " OR ").replaceAll(",", " AND ").replaceAll("!", " NOT "));
FilterBuilder fb = FilterBuilders.andFilter(FilterBuilders.rangeFilter("Experiance").from(smonth).to(emonth));
FilteredQueryBuilder fqBuilder = QueryBuilders.filteredQuery(qb, fb);

org.elasticsearch.action.search.SearchResponse searchHits = node.client()
.prepareSearch(name)
.setQuery(fqBuilder)

在这段代码中,我正在搜索在月和月之间经历过的数据。

现在,我需要在搜索中添加更多过滤器,因此我转到“NativeSearchQueryBuilder”。修改后,我写这段代码:
qb = QueryBuilders.queryString(query.replaceAll(" ", " OR ").replaceAll(",", " AND ").replaceAll("!", " NOT "));
FilterBuilder fb = FilterBuilders.andFilter(FilterBuilders.rangeFilter("Experiance").from(smonth).to(emonth));
NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
builder.withQuery(qb);
AndFilterBuilder filters = null;
filters = new AndFilterBuilder(fb);
filters.add(FilterBuilders.andFilter(FilterBuilders.boolFilter().must(FilterBuilders.termFilter("providedZipcode", zipcode)))); //third filter
builder.withFilter(filters);


org.elasticsearch.action.search.SearchResponse searchHits = node.client()
.prepareSearch(name)
.setQuery(builder.build().getQuery());

但是,当我搜索然后筛选器不起作用。我没有根据经验和邮政编码获得数据。

最佳答案

得到它了。

我们可以使用setPostFilter

https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/search.html

org.elasticsearch.action.search.SearchResponse searchHits =  node.client()
.prepareSearch(name)
// .setIndices(name)
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(fqBuilder)
.setPostFilter(FilterBuilders.andFilter(FilterBuilders.boolFilter().must(FilterBuilders.termFilter("providedZipcode", zipcode)))); // Filter

但是我还有另一个问题。如果我没有通过邮政编码,则不会显示数据。如果我不通过任何邮政编码,我想获取所有数据。

关于java - 2带有查询的过滤器在ElasticSearch中不起作用,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31719227/

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