ElasticSearch
ES、Lucene、Solr 区别
- es:基于lucene搜索引擎
- solr:基于lucene搜索引擎
- lucene:Lucene是非常优秀的成熟的 开源的 免费的纯 纯java 语言的全文索引检索工具包jar。 是搜索引擎的底层。
什么是 tokenizer、analyzer、filter ?
运行 elasticsearch
使用docker compose运行elasticsearch7
详细设置请参考本站 链接
编译镜像
docker compose build启用elasticsearch7和kibana
docker compose up -d关闭elasticsearch7和kibana
docker compose down -v访问kibana地址http://localhost:5601
使用docker compose运行elasticsearch8
详细设置请参考本站 链接
编译镜像
docker compose build启用elasticsearch8和kibana
docker compose up -d关闭elasticsearch8和kibana
docker compose down -v访问kibana地址http://localhost:5601
中文 IK 和拼音插件
插件下载地址:https://release.infinilabs.com
中文 IK 分词器动态词汇扩展
在示例1中启动 elasticsearch7 服务
docker compose up -d使用示例2运行单元测试,因为使用 http 方式扩展 ik 分词器并且添加“日琳”和“精讲”词汇,所以单元测试能够通过。
客户端
spring-data-elasticsearch
和 elasticsearch 版本兼容列表
下表显示了 Spring Data 发布系列使用的 Elasticsearch 和 Spring 版本以及其中包含的 Spring Data Elasticsearch 版本。
| Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework |
|---|---|---|---|
| 2024.1 | 5.4.x | 8.15.5 | 6.2.x |
| 2024.0 | 5.3.1 | 8.13.4 | 6.1.x |
| 2023.1 (Vaughan) | 5.2.x[1] | 8.11.1 | 6.1.x |
| 2023.0 (Ullmann) | 5.1.x[1] | 8.7.1 | 6.0.x |
| 2022.0 (Turing) | 5.0.x[1] | 8.5.3 | 6.0.x |
| 2021.2 (Raj) | 4.4.x[1] | 7.17.3 | 5.3.x |
| 2021.1 (Q) | 4.3.x[1] | 7.15.2 | 5.3.x |
| 2021.0 (Pascal) | 4.2.x[1] | 7.12.0 | 5.3.x |
| 2020.0 (Ockham) | 4.1.x[1] | 7.9.3 | 5.3.2 |
| Neumann | 4.0.x[1] | 7.6.2 | 5.2.12 |
| Moore | 3.2.x[1] | 6.8.12 | 5.2.12 |
| Lovelace | 3.1.x[1] | 6.2.2 | 5.1.19 |
| Kay | 3.0.x[1] | 5.5.0 | 5.0.13 |
| Ingalls | 2.1.x[1] | 2.4.0 | 4.3.25 |
用法
详细用法请参考本站 示例
运行示例需要启动 elasticsearch7。
Java Transport Client
提醒:目前项目业务实现使用此客户端。
详细用法请参考本站 示例
运行示例需要启动 elasticsearch7。
Java High Level REST Client
注意:无法使用
elasticsearch-rest-high-level-client操作elasticsearch8,可能是因为elasticsearch8 docker启动不正确导致。
详细用法请参考本站 示例
运行示例需要启动 elasticsearch7。
Java Low Level REST Client
Elasticsearch Java API Client
提醒:较新版本
elasticsearch推荐使用这个客户端操作elasticsearch。
实现好友、群组、群组成员、聊天消息关键字搜索功能
详细用法请参考本站 示例
运行示例需要启动 elasticsearch7。
性能实验
Java transport client单条插入和批量插入性能对比
详细的jmh代码请参考https://gitee.com/dexterleslie/demonstration/blob/master/elasticsearch/elasticsearch7/elasticsearch-java-transport-client/src/test/java/com/future/demo/elasticsearch/IndividualAndBulkAddPerfComparisonTests.java
实验结论:批量插入性能高于单条插入性能。