欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > Elasticsearch 8.x 在 java 中的使用情况

Elasticsearch 8.x 在 java 中的使用情况

2025/5/9 5:07:59 来源:https://blog.csdn.net/qq_41893505/article/details/147755337  浏览:    关键词:Elasticsearch 8.x 在 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> <!-- 使用最新 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()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词