Elasticsearch 8.x 在 java 中的使用情况_elasticsearch8 java
在 Java Spring Boot 微服务中集成 Elasticsearch 8.x,推荐使用官方的 Elasticsearch Java API Client(不同于 7.x 的 High Level REST Client)。
以下是 Elasticsearch 8.x 集成常用 API 及使用示例:
✅ 一、依赖配置(Maven)
<dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> <version>8.11.1</version> </dependency>
✅ 二、客户端配置(Spring Bean)
@Configurationpublic class ElasticsearchConfig { @Bean public ElasticsearchClient elasticsearchClient() { RestClient restClient = RestClient.builder( new HttpHost(\"localhost\", 9200)).build(); ElasticsearchTransport transport = new RestClientTransport( restClient, new JacksonJsonpMapper()); return new ElasticsearchClient(transport); }}
🔍 三、常用 API 和查询示例
1. Indexing(写入文档)
elasticsearchClient.index(i -> i .index(\"products\") .id(\"1\") .document(new Product(\"iPhone 15\", 799.0)));
2. Match 查询(全文搜索)
SearchResponse<Product> response = elasticsearchClient.search(s -> s .index(\"products\") .query(q -> q .match(m -> m .field(\"name\") .query(\"iPhone\") ) ), Product.class);
3. Term 查询(精确匹配)
elasticsearchClient.search(s -> s .index(\"products\") .query(q -> q .term(t -> t .field(\"status.keyword\") .value(\"active\") ) ), Product.class);
4. Bool 查询(多条件组合)
elasticsearchClient.search(s -> s .index(\"products\") .query(q -> q .bool(b -> b .must(m -> m.match(mm -> mm.field(\"name\").query(\"iPhone\"))) .filter(f -> f.range(r -> r.field(\"price\").gte(JsonData.of(500)).lte(JsonData.of(1000)))) ) ), Product.class);
5. 分页 + 排序
elasticsearchClient.search(s -> s .index(\"products\") .from(0) .size(10) .sort(sort -> sort .field(f -> f .field(\"price\") .order(SortOrder.Desc) ) ), Product.class);
6. 删除文档
elasticsearchClient.delete(d -> d .index(\"products\") .id(\"1\"));
✅ 四、实体类示例(Product)
public class Product { private String name; private double price; // Constructors, getters, setters...}
📌 小结:常用 API 关键点
client.index()
query().match()
query().term()
query().bool()
from()
, size()
, sort()
client.delete()