> 技术文档 > Elasticsearch 8.x 在 java 中的使用情况_elasticsearch8 java

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 关键点

功能 API 调用 写入文档 client.index() 全文搜索 query().match() 精确匹配 query().term() 复合查询 query().bool() 分页 & 排序 from(), size(), sort() 删除 client.delete()