ElasticSearch 实战:Java操作elasticsearch基于smartcn中文分词查询

// …

RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(“your_elasticsearch_host”, 9200, “http”), // 替换为您的 Elasticsearch 主机地址、端口和协议
new HttpHost(“your_elasticsearch_host”, 9201, “http”) // 如果有多个节点,可以添加更多 HttpHost
)
);


#### **定义映射并索引数据**


确保您的索引已经为需要进行中文分词查询的字段配置了 `smartcn` 分析器。以下是一个示例映射:



PUT my_index
{
“mappings”: {
“properties”: {
“content”: {
“type”: “text”,
“analyzer”: “smartcn”,
“search_analyzer”: “smartcn”
}
}
}
}


索引一些中文文档:



POST my_index/_doc
{
“content”: “这是使用smartcn分词器进行查询的示例文档”
}

POST my_index/_doc
{
“content”: “另一个包含相同关键词的文档,用于演示分词查询”
}


#### **执行基于 smartcn 的查询**


以下是如何在 Java 中使用 `smartcn` 分词器执行查询的示例:



import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;

// …

String queryText = “使用smartcn分词器查询”;

SearchRequest searchRequest = new SearchRequest(“my_index”);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();

MultiMatchQueryBuilder multiMatchQueryBuilder = new MultiMatchQueryBuilder(queryText, “content”)
.analyzer(“smartcn”); // 指定使用 smartcn 分析器

searchSourceBuilder.query(multiMatchQueryBuilder);

searchRequest.source(searchSourceBuilder);

SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);

searchResponse.getHits().forEach(hit -> {
String content = hit.getSourceAsMap().get(“content”).toString();

System.out.println("匹配文档内容: " + content);

});


在这个示例中,我们使用 `MultiMatchQueryBuilder` 构建了一个查询,指定查询字段为 `content`,并指定了 `analyzer` 参数为 `smartcn`,确保查询时使用 `smartcn` 分词器对查询文本进行分词处理。执行查询后,打印出匹配文档的内容。


### 最后

由于篇幅有限,这里就不一一罗列了,**20道常见面试题(含答案)+21条MySQL性能调优经验**小编已整理成Word文档或PDF文档

![MySQL全家桶笔记](https://img-blog.csdnimg.cn/img_convert/527613d82de892c9df9b5d1d06ae8689.webp?x-oss-process=image/format,png)

**还有更多面试复习笔记分享如下**

![Java架构专题面试复习](https://img-blog.csdnimg.cn/img_convert/d91c901fb6ea3622c51650450e7fd064.webp?x-oss-process=image/format,png)

转存中...(img-a69DAAix-1714289070501)]

**还有更多面试复习笔记分享如下**

[外链图片转存中...(img-dPN4HliH-1714289070501)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值