在 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> <!-- 使用最新 8.x 版本 -->
</dependency>
✅ 二、客户端配置(Spring Bean)
@Configuration
public class ElasticsearchConfig {@Beanpublic 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() |