You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中用Elasticsearch 6.2.4高级REST客户端按字段搜索?

Elasticsearch 6.2.4 高级REST客户端按name字段搜索实现

我来帮你补全这段基于Elasticsearch 6.2.4高级REST客户端的搜索代码,顺便把关键环节拆解清楚:

完整代码示例

import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;

import java.io.IOException;

public class EsSearchExample {

    public void searchByName(RestHighLevelClient client, String name) throws IOException {
        // 1. 构建搜索源(基于你已有代码补充)
        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        // 使用termQuery做精确匹配,若需要模糊匹配可改用matchQuery
        sourceBuilder.query(QueryBuilders.termQuery("name", name));
        // 按需设置返回条数,比如限制最多返回10条结果
        sourceBuilder.size(10);

        // 2. 补全搜索请求配置
        SearchRequest searchRequest = new SearchRequest("people");
        // 指定文档类型(6.x版本仍支持类型,这里对应你的'human')
        searchRequest.types("human");
        // 将搜索源绑定到请求上
        searchRequest.source(sourceBuilder);

        // 3. 执行搜索请求
        SearchResponse searchResponse = client.search(searchRequest);

        // 4. 解析并处理搜索结果
        SearchHit[] hits = searchResponse.getHits().getHits();
        for (SearchHit hit : hits) {
            // 获取文档ID
            String docId = hit.getId();
            // 获取原始文档内容(可直接转为字符串或Map处理)
            String sourceContent = hit.getSourceAsString();
            
            System.out.println("匹配到文档ID: " + docId + ",内容: " + sourceContent);
        }
    }
}

关键细节补充

  • 客户端初始化:别忘了提前完成RestHighLevelClient的初始化,示例如下(可放在项目启动逻辑或工具类中):
RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(
                new HttpHost("localhost", 9200, "http")));
  • 查询类型选择:如果需要模糊匹配(比如输入"ste"能找到"Steve"),把termQuery替换为matchQuery("name", name)即可——term适用于精确匹配keyword类型字段,match适用于text类型字段的分词匹配。
  • 资源释放:使用完客户端后记得调用client.close();,避免资源泄漏。

内容的提问来源于stack exchange,提问作者driveall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:02:01