跳到主要内容

Elasticsearch 版本特性

介绍

Elasticsearch 是一个分布式、RESTful 风格的搜索和分析引擎,广泛应用于日志分析、全文搜索、实时数据分析等场景。随着 Elasticsearch 的不断发展,每个新版本都引入了许多新特性和改进。了解这些版本特性不仅有助于你更好地使用 Elasticsearch,还能帮助你优化现有的搜索和分析功能。

本文将带你了解 Elasticsearch 的主要版本特性,并通过实际案例展示这些特性的应用场景。

Elasticsearch 版本概述

Elasticsearch 的版本号遵循语义化版本控制(Semantic Versioning),即 主版本号.次版本号.修订号。每个版本的发布都会带来新特性、性能改进和 bug 修复。

主要版本特性

以下是 Elasticsearch 主要版本的一些关键特性:

Elasticsearch 7.x

  • 跨集群搜索(Cross-Cluster Search):允许你在多个集群之间执行搜索操作,简化了分布式环境下的数据查询。
  • 索引生命周期管理(ILM):自动管理索引的生命周期,包括创建、删除、滚动更新等操作。
  • SQL 支持:提供了对 SQL 查询的原生支持,使得熟悉 SQL 的用户可以更容易地使用 Elasticsearch。

Elasticsearch 8.x

  • 安全默认启用:从 8.0 开始,Elasticsearch 默认启用了安全功能,包括 TLS 加密和用户认证。
  • 向量搜索(Vector Search):支持基于向量的相似性搜索,适用于机器学习模型的嵌入向量搜索。
  • 冻结索引(Frozen Indices):允许你将不常用的索引“冻结”以节省资源,同时仍然可以查询这些索引。

实际案例

案例 1:跨集群搜索

假设你有两个 Elasticsearch 集群,分别存储了不同地区的销售数据。你希望在一个查询中同时搜索这两个集群的数据。

json
GET /sales,remote_cluster:sales/_search
{
"query": {
"match": {
"product": "laptop"
}
}
}

输出:

json
{
"took": 50,
"timed_out": false,
"_shards": {
"total": 10,
"successful": 10,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 100,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "sales",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"product": "laptop",
"price": 1200
}
},
{
"_index": "remote_cluster:sales",
"_type": "_doc",
"_id": "2",
"_score": 1.0,
"_source": {
"product": "laptop",
"price": 1100
}
}
]
}
}

案例 2:索引生命周期管理

假设你有一个日志索引,每天生成一个新的索引。你可以使用 ILM 自动管理这些索引的生命周期。

json
PUT _ilm/policy/logs_policy
{
"policy": {
"phases": {
"hot": {
"actions": {
"rollover": {
"max_size": "50GB",
"max_age": "30d"
}
}
},
"delete": {
"min_age": "90d",
"actions": {
"delete": {}
}
}
}
}
}

总结

Elasticsearch 的每个版本都带来了许多新特性和改进,这些特性可以帮助你更好地管理和优化搜索和分析功能。通过了解这些版本特性,你可以更高效地使用 Elasticsearch,并充分利用其强大的功能。

附加资源

练习

  1. 尝试在你的 Elasticsearch 集群中启用跨集群搜索功能,并执行一个跨集群查询。
  2. 使用索引生命周期管理(ILM)创建一个策略,自动管理你的日志索引。
提示

如果你在练习中遇到问题,可以参考 Elasticsearch 官方文档或社区论坛获取帮助。