You need to enable JavaScript to run this app. 如何在spring-data-elasticsearch中使用Analyze API发起分词请求?
优惠活动
大模型
产品
解决方案
定价
更多

如何在spring-data-elasticsearch中使用Analyze API发起分词请求?

调用Elasticsearch _analyze接口的三种可行方案

方案1:使用Spring Data Elasticsearch原生封装API(最推荐)

不需要依赖ES官方客户端的原生类,完全贴合Spring Data的使用规范:

// 若使用全局分析器,不需要绑定具体索引,可传入空索引名
IndexOperations indexOps = elasticsearchRestTemplate.indexOps(IndexCoordinates.of(""));
// 传入待分词内容和指定的分析器名称
List<AnalyzeToken> tokens = indexOps.analyze(new AnalyzeQuery(payload, "stop"));

返回结果直接是已经解析好的分词Token列表,包含分词内容、偏移量、位置等信息。

方案2:直接使用RestHighLevelClient原生API

你构建的AnalyzeRequest本身就是ES官方Java客户端的原生请求类,不需要手动转换为低级别Request对象,直接调用对应方法即可:

// 1. 构建分析请求
AnalyzeRequest analyzeRequest = AnalyzeRequest.withGlobalAnalyzer("stop", payload);
// 2. 直接通过RestHighLevelClient的索引管理客户端发起调用
AnalyzeResponse response = restHighLevelClient.indices().analyze(analyzeRequest, RequestOptions.DEFAULT);
// 3. 读取分词结果
List<AnalyzeResponse.AnalyzeToken> tokens = response.getTokens();

方案3:使用转换后的低级别Request发起调用

如果确实需要使用你已经转换好的低级别Request对象,可以通过RestHighLevelClient内置的低级别RestClient执行请求:

// 你已经完成的Request构建逻辑
AnalyzeRequest analyzeRequest = AnalyzeRequest.withGlobalAnalyzer("stop", payload);
Request request = RequestConverters.analyze(analyzeRequest);
// 1. 获取低级别RestClient实例
Response response = restHighLevelClient.getLowLevelClient().performRequest(request);
// 2. 自行解析响应内容
String responseBody = EntityUtils.toString(response.getEntity());
// 可根据需要将响应JSON反序列化为对应对象处理

注意:该方案需要自行处理异常捕获、响应解析,仅适合需要自定义请求逻辑的场景,日常使用优先选择前两种方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 19:30:00