gpt4 book ai didi

java - 使用 Java API 在 Elasticsearch 的所有字段中搜索多个字符串

转载 作者:行者123 更新时间:2023-11-29 02:48:06 24 4
gpt4 key购买 nike

我有一个 elasticsearch 索引,用户的字段如..“名字”:“凯”“年龄”:“23”“位置”:“印度德里”“标签”:[“搜索”,“nosql”]等等

我想查询用户所有字段中的多个字符串(例如 ["nosql","delhi"])。是否可以使用 Java API?

这是我正在使用的代码示例。 (但与问题无关)只是了解我现在正在使用的对象。

BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
.must(QueryBuilders.matchAllQuery());
if(location!=null) {
queryBuilder.must(QueryBuilders.matchQuery("location",location));
}
BoolFilterBuilder filerBuilder=FilterBuilders.boolFilter();
for(String skill:skills){
filerBuilder.must(FilterBuilders.rangeFilter("tags."+skill).from(0));
}
filerBuilder.must(FilterBuilders.queryFilter(queryBuilder));
if(age!=null) {
filerBuilder.must(FilterBuilders.rangeFilter("age").from(age[0]).to(age[1]));
}
SearchResponse response = client.prepareSearch("skillbin")
.setTypes("stackdump")
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(queryBuilder)
.setPostFilter(filerBuilder)
.addSort("reputation", SortOrder.DESC)
.execute()
.actionGet();
SearchHits hits=response.getHits();

提前致谢。 :)

最佳答案

在 Java API 中,您可以查询“_all”字段,默认情况下它包括文档的所有字段。另一种方法是使用 MultiMatchQuery这更灵活,允许您指定要查询的字段列表。

这里是一些关于如何访问“_all”字段以及如何创建 MultiMatchQuery 的示例代码通过使用 MultiMatchQueryBuilderQueryBuilders . multiMatchQuery沿着query搜索in all the fields :

String queryString = "nosql delhi";

String allField = "_all";

MultiMatchQueryBuilder mmqb = QueryBuilders.multiMatchQuery(queryString, allField);

关于java - 使用 Java API 在 Elasticsearch 的所有字段中搜索多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27243698/

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