ZBLOG

QueryBuilders.termQuery没有这个api

抱歉,我之前的回答有误。在 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助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17900

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?