抱歉,我之前的回答有误。在 Elasticsearch 8 中,确实没有 QueryBuilders.termQuery
这个 API。实际上,从 Elasticsearch 7 开始,已经不再使用该方法。
在 Elasticsearch 8 中,可以使用以下方式构建 term 查询:
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
public class ElasticsearchSearchExample {
public static void main(String[] args) {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder("localhost:9200"));
try {
SearchRequest searchRequest = new SearchRequest("your_index_name");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 构建 term 查询
searchSourceBuilder.query(QueryBuilders.termQuery("your_field_name.keyword", "value"));
searchRequest.source(searchSourceBuilder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
// 处理搜索结果
// ...
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
请注意,在构建 term 查询时,需要使用字段名称后面加上 .keyword
来表示精确匹配。这是因为默认情况下,Elasticsearch 对字符串字段进行分析和索引,并且会生成一个新的 keyword 字段用于精确匹配。
再次为之前的错误回答道歉,希望这次能给您正确的指导。
内容由零声教学AI助手提供,问题来源于学员提问