一、插件简介
1、为什么要使用插件
Elasticsearch 插件是一种扩展 Elasticsearch 核心功能的方式,允许用户根据特定需求定制和增强 Elasticsearch 的功能。插件可以为 Elasticsearch 添加自定义映射类型、自定义分词器、原生脚本、自伸缩等功能 。它们通常包括 JAR 文件,但也可以包含脚本和配置文件,并且为了使插件在整个集群中生效,必须在集群中的每个节点上安装,并且需要重启每个节点 。
1. 增强功能
Elasticsearch 本身提供了大量的功能,但是某些特定需求可能不在其默认功能覆盖范围内。例如,某些特定的语言分词器或者特定的数据分析工具,就需要通过插件的形式来添加 。
2. 优化性能
对于某些特定的工作负载,预设的 Elasticsearch 设置可能不是最优的。插件可以用来调整 Elasticsearch 的行为,使其更适合特定的应用场景,从而提高性能 。
3. 增加易用性
插件可以增加 Elasticsearch 的易用性,比如提供图形用户界面(GUI),可以极大地简化了 Elasticsearch 的管理和数据可视化过程 。
4. 定制化
Elasticsearch 用户可以根据自己的需求开发自定义插件,这样就可以实现完全符合自身业务逻辑的功能,而不是依赖于通用的解决方案 。
5. 监控和管理
插件还可以用来增强 Elasticsearch 的监控能力,帮助管理员更好地理解和控制集群的状态。
6. 数据处理
插件可以扩展 Elasticsearch 的数据处理能力,比如通过添加新的分析器来支持更复杂的文本分析任务。
2、插件的种类
插件大致可以分为两类:
- 核心插件:这些插件是 Elasticsearch 项目的一部分,与 Elasticsearch 同步发布,并保持版本一致。它们由 Elasticsearch 的官方团队维护,通常可以信任其稳定性和安全性 。
- 第三方插件:这些插件由社区贡献者或其他组织开发,提供了比核心插件更多样化和更具体的特性。虽然这些插件可能非常有用,但在使用时应考虑到它们的维护和支持水平 。
通过插件,Elasticsearch 变得更加灵活和强大,能够适应不断变化的业务需求和技术挑战。
二、插件目录
点击目录可直接跳转
插件名称 | 作用 | 来源 |
---|---|---|
Elasticsearch-head | 提供了一个Web界面来浏览和与Elasticsearch集群交互,包括数据可视化、执行增删改查操作等 | 第三方开源 |
analysis-icu | 分析 | 官方维护 |
analysis-ik | 中文分词 | 第三方开源 |
analysis-kuromoji | 日语文本分析 | 官方维护 |
analysis-phonetic | 音标分析 | 官方维护 |
analysis-pinyin | 将中文字符转换为拼音 | 第三方开源 |
analysis-smartcn | 中文文本分析 | 官方维护 |
analysis-stconvert | 中文简繁体转换 | 第三方开源 |
mapper-murmur3 | 映射器,允许在创建索引时计算字段哈希值并将其存储到索引中 | 官方维护 |
mapper-size | 允许在索引时记录文档压缩前的原始大小 | 官方维护 |
elasticsearch-sql | 允许用户使用标准的SQL语法来查询Elasticsearch中的数据 | 官方维护 |
ingest-attachment | 自动解析和索引多种格式的文件,如 PDF、Word、PPT、Excel 等,使得这些文件的内容可以被全文检索 | 官方维护 |
elasticsearch-repository-oss | 将 Elasticsearch 的索引快照备份到阿里云的对象存储服务(OSS)中,以及从 OSS 中恢复这些快照 | 第三方开源 |
repository-hdfs | 许用户将 Elasticsearch 的索引快照备份到 Hadoop 分布式文件系统(HDFS)中,以及从 HDFS 中恢复这些快照 | 官方维护 |
三、常用插件
1、Elasticsearch-head 插件
elasticsearch-head
插件是一个基于浏览器的用户界面工具,用于管理和监控 Elasticsearch 集群。虽然它不是一个正式的Elasticsearch 插件,而是一个独立的前端应用程序,但它广泛用于开发和测试环境中来探索和管理 Elasticsearch 数据。
1、作用
- 集群监控:
elasticsearch-head
提供了一个直观的界面来查看集群的健康状态、节点状态以及其他重要的集群信息。用户可以通过这个界面来监控集群的整体运行状况。 - 索引管理:它可以用来创建、删除索引,以及查看索引的详细信息,如映射(mapping)、设置(setting)等。
- 文档操作:
elasticsearch-head
允许用户直接向 Elasticsearch 发送请求来增删改查文档。你可以添加新的文档、更新现有文档、删除文档,以及检索文档。 - 查询构建:对于那些想要学习 Elasticsearch 查询语言的人来说,
elasticsearch-head
提供了一个方便的环境来进行实验。你可以构建复杂的查询请求,并立即看到查询的结果。 - 映射和设置:你可以通过
elasticsearch-head
查看和编辑索引的映射和设置,这对于理解索引结构和调整索引配置非常有用。 - 分布式集群管理:由于 Elasticsearch 是一个分布式系统,
elasticsearch-head
可以帮助你理解集群中各个节点的角色和状态,以及数据是如何分布的。 - 学习工具:对于初学者来说,
elasticsearch-head
是一个很好的学习工具,因为它简化了许多常见的 Elasticsearch 操作,并且提供了即时反馈。
2、使用方法
本地部署
# git clone https://github.com/mobz/elasticsearch-head.git
# yum -y install epel-release
# yum -y install nodejs npm
# cd elasticsearch-head/
# npm install
# cd _site/
# vim app.js
# 原代码为this.base_uri = this.config.base_uri;
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.1.10:9200";
# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
# cd elasticsearch-head/
# node_modules/grunt/bin/grunt server &
浏览器插件安装
下载es-head插件,https://github.com/mobz/elasticsearch-head
下载后,解压,复制crx目录下es-head.crx到桌面
改名es-head.crx为es-head.crx.zip
解压es-head.crx.zip到es-head.crx目录,把目录es-head.crx,上传到谷歌浏览器开发工具--扩展程序里
3、注意事项
需要注意的是,elasticsearch-head
项目现在已经不再活跃维护,这意味着它可能不会包含最新的 Elasticsearch 特性和改进。此外,出于安全性的考虑,在生产环境中使用 elasticsearch-head
可能需要额外的配置来保护集群不受未授权访问的影响。
如果你正在寻找一个更为现代且得到官方支持的工具,建议使用 Kibana,它提供了更广泛的特性和更好的用户体验。
2、analysis-icu 插件
Elasticsearch的analysis-icu
插件是一个强大的工具,它通过集成Lucene ICU模块来增强Elasticsearch对Unicode的支持,特别是对亚洲语言的文本分析。以下是关于analysis-icu
插件的详细介绍、使用方法和注意事项:
1、作用
- 提供了对Unicode文本的更好支持,包括对亚洲语言的分析。
- 支持Unicode标准化、大小写不敏感的折叠、排序以及音译。
- 包括多种分析组件,如
icu_tokenizer
、icu_normalizer
等,用于文本的分词和标准化处理。
2、使用方法
安装插件:可以通过Elasticsearch的插件管理命令安装analysis-icu
插件。例如,使用以下命令:
./bin/elasticsearch-plugin install analysis-icu
或者,如果需要指定版本,可以下载特定版本的插件zip文件,并使用以下命令安装:
./bin/elasticsearch-plugin install file:///path/to/analysis-icu-x.y.z.zip
其中x.y.z
是插件的版本号。
创建索引并指定分析器:在创建索引时,可以指定使用icu_analyzer
作为字段的分析器。例如:
json
{
"settings": {
"analysis": {
"analyzer": {
"icu_analyzer": {
"type": "icu_analyzer",
"mode": "search"
}
}
}
},
"mappings": {
"properties": {
"text": {
"type": "text",
"analyzer": "icu_analyzer"
}
}
}
}
测试分词:可以使用Elasticsearch的_analyze API来测试文本的分词效果。例如:
json
{
"text": "我爱北京天安门",
"analyzer": "icu_analyzer"
}
3、注意事项
- 版本兼容性:不同版本的
analysis-icu
插件可能不兼容之前的版本,更新插件时可能需要重新索引数据。 - 集群安装:如果使用Elasticsearch集群,需要在每个节点上安装插件并重启。
- 重新索引:由于ICU库会定期更新,包括添加新字符和表情符号,以及改进排序顺序,因此可能需要重新索引以获得正确的搜索和排序结果。
- 安装位置:确保在安装插件之前停止Elasticsearch服务,并且安装后需要重启服务以使插件生效。
3、analysis-ik 插件
Elasticsearch插件analysis-ik
是一个专为中文分词设计的插件,它集成了Lucene IK Analyzer,支持自定义词典,能够提高中文文本处理的准确性。
1、作用
analysis-ik
插件提供了对中文文本的高效分词能力。- 支持两种分词模式:
ik_smart
(最少切分,适合搜索)和ik_max_word
(最细粒度划分,适合索引)。 - 允许用户通过自定义词典来扩展或覆盖默认的分词词典。
2、使用方法
安装插件:根据Elasticsearch的版本,从官方GitHub仓库下载对应版本的analysis-ik
插件,并通过以下命令安装:
./bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-ik/7.10.2
替换{version}
为实际的版本号。
创建索引并指定分析器:在创建索引时,可以指定字段使用ik_smart
或ik_max_word
分析器。例如:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"ik_analyzer": {
"type": "ik",
"use_smart": true
}
}
}
},
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "ik_analyzer"
}
}
}
}
测试分词:可以使用Elasticsearch的_analyze API来测试分词效果。例如:
POST _analyze
{
"analyzer": "ik_smart",
"text": "我是中国人"
}
3、注意事项
- 版本匹配:确保
analysis-ik
插件的版本与Elasticsearch的版本相匹配。 - 自定义词典:可以通过修改
IKAnalyzer.cfg.xml
配置文件来引入自定义词典,增强分词的准确性。 - 重启服务:安装插件后需要重启Elasticsearch服务以使插件生效。
- 索引重建:更新自定义词典后,已有的索引不会自动更新,需要重建索引或对新数据进行索引。
- 集群安装:在Elasticsearch集群中,需要在每个节点上安装插件并重启。
通过使用analysis-ik
插件,可以显著提升Elasticsearch在处理中文文本方面的性能和准确性。
4、analysis-kuromoji 插件
Elasticsearch插件analysis-kuromoji
是一个专门用于日语文本分析的插件,它集成了Lucene Kuromoji分析模块,提供了强大的日语分词和文本处理功能。
1、作用
analysis-kuromoji
插件提供了基于Kuromoji的分词器,Kuromoji是一个流行的日语分词库,能够处理现代与古代的日语文本,包括平假名、片假名、汉字以及各种书写形式。- 它包括字典和形态学分析,可以拆解复杂的词汇并进行词性标注。
- 插件支持多种分词模式,包括标准模式(normal)、搜索模式(search)和扩展模式(extended),以适应不同的搜索需求。
2、使用方法
安装插件:可以通过Elasticsearch的插件管理命令安装analysis-kuromoji
插件。例如,使用以下命令:
./bin/elasticsearch-plugin install analysis-kuromoji
如果需要离线安装,可以从官方下载页面下载相应版本的插件文件,并使用以下命令安装:
bin/elasticsearch-plugin install file:///path/to/analysis-kuromoji-x.y.z.zip
其中x.y.z
是插件的版本号。
创建索引并指定分析器:在创建索引时,可以指定使用kuromoji
分析器。例如:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_kuromoji_analyzer": {
"type": "kuromoji",
"mode": "search"
}
}
}
},
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "my_kuromoji_analyzer"
}
}
}
}
-
测试分词:可以使用Elasticsearch的_analyze API来测试文本的分词效果。例如:
GET /my_index/_analyze { "analyzer": "my_kuromoji_analyzer", "text": "私は寿司が好きです" }
3、注意事项
- 版本兼容性:确保
analysis-kuromoji
插件的版本与Elasticsearch的版本相匹配。 - 自定义词典:可以通过创建用户词典来扩展或覆盖默认的分词词典。
- 重启服务:安装插件后需要重启Elasticsearch服务以使插件生效。
- 集群安装:在Elasticsearch集群中,需要在每个节点上安装插件并重启。
- 全角字符处理:
kuromoji_tokenizer
可能会将全角字符分割成意外的标记,可以通过添加icu_normalizer
字符过滤器来避免这个问题。
5、analysis-phonetic 插件
Elasticsearch插件analysis-phonetic
提供了将令牌转换为它们的语音表示形式的标记过滤器,使用Soundex、Metaphone以及各种其他算法。这个插件可以用于匹配拼写不同但发音相同的单词,例如在搜索时找到发音相似的单词。
1、作用
- 将文本转换为它们的语音表示,以便进行语音搜索。
- 支持多种语音编码器,包括Soundex、Metaphone等。
- 可以用于提高搜索的灵活性和准确性,尤其是在处理拼写错误或寻找发音相似的词汇时。
2、使用方法
安装插件:使用Elasticsearch的插件管理器安装analysis-phonetic
插件。例如,使用以下命令:
./bin/elasticsearch-plugin install analysis-phonetic
或者,对于离线安装,可以从官方下载页面下载相应版本的插件文件,并使用以下命令安装:
bin/elasticsearch-plugin install file:///path/to/analysis-phonetic-x.y.z.zip
其中x.y.z
是插件的版本号。
创建索引并配置分析器:在创建索引时,可以设置使用phonetic
过滤器。例如:
PUT phonetic_sample
{
"settings": {
"index": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": [
"lowercase",
"my_metaphone"
]
}
},
"filter": {
"my_metaphone": {
"type": "phonetic",
"encoder": "metaphone",
"replace": false
}
}
}
}
}
}
其中encoder
参数指定了使用的语音编码器,replace
参数指定是否用语音标记替换原始标记。
测试分词:可以使用Elasticsearch的_analyze API来测试文本的分词效果。例如:
GET phonetic_sample/_analyze
{
"analyzer": "my_analyzer",
"text": "Example text to analyze"
}
3、注意事项
- 版本兼容性:确保
analysis-phonetic
插件的版本与Elasticsearch的版本相匹配。 - 集群安装:在Elasticsearch集群中,需要在每个节点上安装插件并重启。
- 字段设计:使用
replace
: false可能会导致原始和语音分析器版本都在同一字段的令牌位置,这可能会影响模糊查询的同义词标记推理。因此,使用单独的字段进行分析而不进行phonetic语音过滤可能是一个更明智的选择。
6、analysis-pinyin 插件
Elasticsearch插件analysis-pinyin
是一个用于中文文本分析的插件,它能够将中文字符转换为拼音,从而实现对中文文本的拼音分析。这个插件特别适用于需要通过拼音进行搜索或分析的中文应用场景。
1、作用
- 将中文字符转换为拼音,支持全拼和首字母的转换。
- 可以用于提高中文搜索的灵活性和准确性,尤其是在处理拼写错误或寻找发音相似的词汇时。
2、使用方法
下载插件:根据Elasticsearch版本选择对应的analysis-pinyin
插件版本进行下载。可以从GitHub上的medcl/elasticsearch-analysis-pinyin获取最新版本。
安装插件:在Elasticsearch安装目录下的bin
目录执行以下命令安装:
bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-pinyin/7.10.2
其中x.y.z
是插件的版本号。
创建索引并配置分析器:在创建索引时,可以设置使用pinyin
分析器。例如:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"pinyin_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["lowercase", "pinyin"]
}
},
"filter": {
"pinyin": {
"type": "pinyin",
"keep_full_pinyin": true,
"keep_separate_first_letter": false,
"keep_first_letter": true,
"keep_original": false,
"limit_first_letter_length": 16,
"remove_duplicated_term": true
}
}
}
}
}
测试分词:可以使用Elasticsearch的_analyze API来测试文本的分词效果。例如:
GET /my_index/_analyze
{
"text": "科技创新",
"analyzer": "pinyin_analyzer"
}
3、注意事项
- 版本兼容性:确保
analysis-pinyin
插件的版本与Elasticsearch的版本相匹配。 - 重启服务:安装插件后需要重启Elasticsearch服务以使插件生效。
- 自定义词典:可以通过创建用户词典来扩展或覆盖默认的分词词典。
- 集群安装:在Elasticsearch集群中,需要在每个节点上安装插件并重启。
- 字段设计:使用拼音分析器时,可能需要在索引中为同一字段设置不同的分析器,以适应不同的查询需求。
7、analysis-smartcn 插件
Elasticsearch插件analysis-smartcn
是一个专为中文文本分析设计的插件,它集成了Lucene的Smart Chinese分析模块,提供了对中文或中英文混合文本的分析能力。
1、作用
analysis-smartcn
插件利用基于隐马尔可夫模型的概率知识来对简体中文文本进行最佳分词。- 它首先将文本分解为句子,然后对每个句子进行切分以获得单词。
- 插件提供了
smartcn
分析器和smartcn_tokenizer
标记器,这些组件均不可配置。
2、使用方法
安装插件:在Elasticsearch安装目录下的bin
目录执行以下命令来安装analysis-smartcn
插件:
./bin/elasticsearch-plugin install analysis-smartcn
重启Elasticsearch服务:安装插件后,需要重启Elasticsearch服务以使插件生效。
创建索引并指定分析器:在创建索引时,可以设置字段使用smartcn
分析器。例如:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_smartcn_analyzer": {
"type": "smartcn"
}
}
}
},
"mappings": {
"properties": {
"content": {
"type": "text",
"analyzer": "my_smartcn_analyzer"
}
}
}
}
测试分词:可以使用Elasticsearch的_analyze API来测试文本的分词效果。例如:
POST /my_index/_analyze
{
"analyzer": "smartcn",
"text": "我是中国人"
}
3、注意事项
- 版本兼容性:在安装之前,请确保选择的
smartcn
插件版本与Elasticsearch版本相匹配。 - 集群安装:如果使用Elasticsearch集群,需要在每个节点上安装插件并重启。
- 分词效果:使用
smartcn
分析器可能会使查询结果变少,但查询结果会更精确。
8、analysis-stconvert 插件
Elasticsearch插件analysis-stconvert
是一个用于中文简繁体转换的分析插件,它可以帮助用户在搜索时匹配简体和繁体的文本。
1、作用
analysis-stconvert
插件能够将中文字符在简体和繁体之间相互转换。- 支持在索引和搜索时进行简繁体转换,以提高搜索的准确性。
- 提供了analyzer、tokenizer、token-filter和char-filter四种类型的组件。
2、使用方法
安装插件:可以通过以下命令安装analysis-stconvert
插件:
./bin/elasticsearch-plugin install https://get.infini.cloud/elasticsearch/analysis-stconvert/7.10.2 # 中文简繁体转换
确保选择与Elasticsearch版本相匹配的插件版本。
重启Elasticsearch服务:安装插件后,需要重启Elasticsearch集群。
创建索引并配置分析器:在创建索引时,可以定义使用stconvert
的分析器、标记器、过滤器或字符过滤器。例如:
PUT /my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "standard",
"filter": ["lowercase", "stconvert"],
"char_filter": ["stconvert"]
}
},
"filter": {
"stconvert": {
"type": "stconvert",
"convert_type": "t2s",
"keep_both": false,
"delimiter": ","
}
},
"char_filter": {
"stconvert": {
"type": "stconvert",
"convert_type": "t2s"
}
}
}
}
}
-
测试分词:可以使用Elasticsearch的_analyze API来测试文本的分词效果。例如:
GET /my_index/_analyze { "analyzer": "my_analyzer", "text": "我爱北京天安门" }
3、注意事项
- 版本兼容性:安装插件时,确保插件版本与Elasticsearch版本相匹配。
- 集群安装:在Elasticsearch集群中,需要在每个节点上安装插件并重启。
- 配置参数:
convert_type
参数用于指定转换方向,默认为s2t
(简体转繁体),可以设置为t2s
(繁体转简体)。keep_both
参数用于指定是否保留原始内容,默认为false
。delimiter
参数用于指定保留原始内容时的分隔符,默认为逗号,
。 - 测试分词效果:在实际应用中,建议先测试分词效果,满意后再进行索引创建和数据导入。
9、mapper-murmur3 插件
Elasticsearch插件mapper-murmur3
提供了在索引时计算字段值的哈希值并将其存储在索引中的能力。这对于执行高基数和大字符串字段的基数聚合特别有用。
1、作用
- 计算字段值的Murmur3哈希,并在索引时存储这些哈希值。
- 通常用于基数聚合,可以提高聚合操作的性能,特别是在处理高基数字段时。
2、使用方法
安装插件:使用Elasticsearch的插件管理器安装mapper-murmur3
插件。例如:
./bin/elasticsearch-plugin install mapper-murmur3
也可以下载插件的zip文件进行离线安装,下载地址为:https://artifacts.elastic.co/downloads/elasticsearch-plugins/mapper-murmur3/mapper-murmur3-8.15.1.zip。
重启Elasticsearch服务:安装插件后,需要重启Elasticsearch集群。
配置映射:在创建索引的映射时,可以定义一个字段使用murmur3
类型。例如:
PUT my-index-000001
{
"mappings": {
"properties": {
"my_field": {
"type": "keyword",
"fields": {
"hash": {
"type": "murmur3"
}
}
}
}
}
}
这样配置后,可以在聚合时引用my_field.hash
来获取my_field
字段值的哈希。
执行聚合:在执行基数聚合时,可以使用murmur3
字段来提高性能。例如:
GET my-index-000001/_search
{
"aggs": {
"my_field_cardinality": {
"cardinality": {
"field": "my_field.hash"
}
}
}
}
3、注意事项
- 插件版本:确保
mapper-murmur3
插件的版本与Elasticsearch的版本相匹配。 - 集群安装:在Elasticsearch集群中,需要在每个节点上安装插件并重启。
- 存储空间:使用
murmur3
字段可能会增加索引的存储空间需求。 - 适用场景:
murmur3
字段适用于几乎唯一的字符串字段,对于数值字段或基数较低的字符串字段,使用murmur3
可能不会带来显著的性能提升。
10、mapper-size 插件
Elasticsearch插件mapper-size
提供了一个名为_size
的元数据字段,该字段在启用后会索引原始_source
字段的大小(以字节为单位)。这对于需要根据文档大小进行聚合、排序或其他操作的场景非常有用。
1、作用
- 允许用户索引和检索文档的原始大小。
- 可以用于监控大文档,或者在聚合和排序中使用文档大小。
2、使用方法
安装插件:可以通过Elasticsearch的插件管理命令安装mapper-size
插件。例如:
./bin/elasticsearch-plugin install mapper-size
也可以下载插件的zip文件进行离线安装,下载地址为:https://artifacts.elastic.co/downloads/elasticsearch-plugins/mapper-size/mapper-size-8.15.1.zip。
启用_size
字段:在创建索引的映射时,需要显式启用_size
字段。例如:
PUT my-index-000001
{
"mappings": {
"_size": {
"enabled": true
}
}
}
这样配置后,_size
字段将被包含在每个文档的元数据中。
使用_size
字段:一旦启用,_size
字段可以在查询、聚合、脚本和排序中使用。例如,可以使用以下查询来找到最大的文档:
GET my-index-000001/_search
{
"query": {
"match_all": {}
},
"sort": [
{
"_size": {
"order": "desc"
}
}
],
"size": 10
}
3、注意事项
- 插件版本:确保
mapper-size
插件的版本与Elasticsearch的版本相匹配。 - 集群安装:在Elasticsearch集群中,需要在每个节点上安装插件并重启。
- 性能影响:启用
_size
字段可能会对索引性能产生一定影响,因为需要额外计算和存储每个文档的大小。 - 存储空间:
_size
字段会增加索引的存储需求。
11、elasticsearch-sql 插件
Elasticsearch插件elasticsearch-sql
(也称为X-Pack SQL)允许用户使用标准的SQL语法来查询Elasticsearch中的数据。这使得熟悉SQL的用户能够更容易地与Elasticsearch交互,而无需学习复杂的Elasticsearch查询DSL。
1、作用
- 提供SQL接口,使得用户可以使用SQL语句来执行数据查询。
- 支持RESTful API、命令行工具和JDBC连接。
- 允许对Elasticsearch中的数据进行复杂的查询和聚合操作。
2、使用方法
安装插件:根据Elasticsearch的版本,从官方GitHub仓库下载对应版本的elasticsearch-sql
插件,并使用以下命令安装:
./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/7.10.2.0/elasticsearch-sql-7.10.2.0.zip # 允许使用 SQL 语句来查询 Elasticsearch 索引
启用SQL功能:在Elasticsearch配置文件elasticsearch.yml
中设置xpack.sql.enabled
为true
。
重启Elasticsearch服务:安装插件后,需要重启Elasticsearch服务以使插件生效。
执行SQL查询:可以使用Kibana的Dev Tools或curl命令来执行SQL查询。例如:
POST /_sql
{
"query": "SELECT * FROM my_index LIMIT 10"
}
3、注意事项
- 版本兼容性:确保
elasticsearch-sql
插件的版本与Elasticsearch的版本相匹配。 - 性能考虑:SQL查询可能会对Elasticsearch集群的性能产生影响,特别是在处理大量数据时。
- 安全性:确保在启用SQL功能时考虑到安全性,如限制可执行SQL查询的用户。
- 集群安装:在Elasticsearch集群中,需要在每个节点上安装插件并重启。
12、ingest-attachment 插件
1、作用
Ingest-attachment 是 Elasticsearch 的一个插件,它允许 Elasticsearch 从常见的文件格式(如 PPT、XLS、PDF 等)中提取文件附件,使用的是 Apache Tika 文本提取库。这个插件可以作为 mapper attachment 插件的替代品。使用 ingest-attachment 插件时,源字段必须是 base64 编码的二进制数据。如果你不想在 base64 之间来回转换,可以使用 CBOR 格式代替 JSON,并指定字段为字节数组而不是字符串表示,处理器将跳过 base64 解码。
2、使用方法
安装 ingest-attachment 插件的命令如下:
./bin/elasticsearch-plugin install ingest-attachment
在集群的每个节点上都必须安装此插件,并且安装后需要重启每个节点。如果需要离线安装,可以从以下网址下载插件的 ZIP 文件:
https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-attachment/ingest-attachment-7.10.2.zip
使用 ingest-attachment 插件之前,需要先建立一个处理管道(pipeline),例如:
PUT _ingest/pipeline/file_attachment
{
"description": "Extract attachment information",
"processors": [
{
"attachment": {
"field": "data",
"indexed_chars": -1,
"ignore_missing": true,
"properties": ["content", "title", "content_type"]
}
}
]
}
在这个管道配置中,attachment
处理器用于解析 data
字段中的文件内容,并将解析结果存储在 attachment
字段中。indexed_chars
设置为 -1 表示不限制索引的字符数。
在索引文件时,需要将文件内容进行 base64 编码,然后通过 HTTP API 将文件发送到 Elasticsearch 进行索引。一旦文件被索引,就可以像搜索普通文本一样搜索这些文件了。例如,搜索包含特定关键字的文档:
GET /my_index/_search
{
"query": {
"match": {
"attachment.content": "your search keyword"
}
}
}
3、注意事项
- 性能考虑:处理大量二进制文件时可能会影响Elasticsearch的性能,建议优化资源配置。
- 安全性:确保通过安全的方式传输文件数据,如使用HTTPS协议。
- 存储与备份:考虑文件的存储和备份策略,以防数据丢失。
- 文件大小限制:Elasticsearch对单个文档的大小有限制,大文件可能需要分割或预先处理。
- 插件版本兼容性:确保
ingest-attachment
插件版本与Elasticsearch版本兼容。
13、elasticsearch-repository-oss 插件
Elasticsearch 插件 elasticsearch-repository-oss
主要用于将 Elasticsearch 的索引快照备份到阿里云的对象存储服务(OSS)中,以及从 OSS 中恢复这些快照。这对于数据备份、灾难恢复和数据迁移等场景非常有用。
1、作用
该插件允许用户:
- 将 Elasticsearch 集群的快照存储到 OSS,以便进行长期备份。
- 从 OSS 恢复快照到 Elasticsearch 集群,用于数据恢复或迁移。
- 利用 OSS 的高可用性和可扩展性,确保数据的安全和可靠性。
2、如何使用
环境准备:确保已开通 OSS 服务,并创建了 Bucket。同时,确保 Elasticsearch 集群已部署并运行。
安装插件:在 Elasticsearch 集群的每个节点上安装 elasticsearch-repository-oss
插件。可以通过 Elasticsearch 的插件管理界面或使用命令行工具进行安装。需要修改plguins/plugin-descriptor.properties中的elasticsearch.version和version,改为自己es集群的版本
./bin/elasticsearch-plugin install https://github.com/aliyun/elasticsearch-repository-oss/releases/download/v7.10.0/elasticsearch-repository-oss-7.10.0.zip
创建仓库:在 Elasticsearch 中创建一个仓库配置,指定 OSS 的 endpoint、access_key_id、secret_access_key、bucket 等信息。要求和你的elasticsearch集群在同一个region中, 这里的endpoint填的是这个region对应的内网地址。
PUT _snapshot/my_backup
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "xxxxxx",
"compress": true
}
}
假设我们上传的数据非常大, 我们可以限制snapshot过程中分块的大小,超过这个大小,数据将会被分块上传到OSS中
POST _snapshot/my_backup/ # 注意我们用的是 POST 而不是 PUT 。这会更新已有仓库的设置
{
"type": "oss",
"settings": {
"endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
"access_key_id": "xxxx",
"secret_access_key": "xxxxxx",
"bucket": "xxxxxx",
"chunk_size": "500mb",
"base_path": "snapshot/" # 设置仓库的起始位置默认为根目录
}
}
创建快照:使用 Elasticsearch 的 snapshot API 创建快照,并将快照存储到 OSS 中。
备份所有打开的索引到 my_backup
仓库下一个命名为 snapshot_1
的快照里
PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true # 快照作为后台进程运行
恢复快照:在需要恢复数据时,从 OSS 中恢复快照到 Elasticsearch 集群。
POST _snapshot/my_backup/snapshot_1/_restore
3、注意事项
- 安全性:确保 OSS 的访问密钥安全,避免泄露。
- 网络配置:如果 Elasticsearch 集群和 OSS 在同一 VPC 下,建议使用内网地址以提高速度和降低成本。
- 插件版本:确保
elasticsearch-repository-oss
插件的版本与 Elasticsearch 集群的版本兼容。 - 数据一致性:在进行数据恢复时,确保目标集群中没有与快照中索引同名的索引,或者在恢复前进行适当的重命名,以避免数据冲突。
- 性能影响:创建和恢复快照可能会对 Elasticsearch 集群的性能产生影响,建议在业务低峰期进行操作。
14、repository-hdfs 插件
Elasticsearch 插件 repository-hdfs
允许用户将 Elasticsearch 的索引快照备份到 Hadoop 分布式文件系统(HDFS)中,以及从 HDFS 中恢复这些快照。
1、作用
repository-hdfs
插件的主要作用是提供一种机制,使得 Elasticsearch 可以利用 HDFS 作为快照的存储仓库,这对于数据备份和灾难恢复非常有用。
2、如何使用
安装插件:在 Elasticsearch 集群的所有节点上安装 repository-hdfs
插件。可以通过以下命令安装:
./bin/elasticsearch-plugin install repository-hdfs
或者,如果需要离线安装,可以下载插件的 zip 文件后使用:
./bin/elasticsearch-plugin install file:///path/to/repository-hdfs.zip
安装完成后,需要重启 Elasticsearch 服务。
配置 HDFS 仓库:创建一个仓库配置,指定 HDFS 的 URI、路径和其他相关配置。例如:
PUT _snapshot/my_hdfs_repository
{
"type": "hdfs",
"settings": {
"uri": "hdfs://namenode:9000/",
"path": "elasticsearch/repositories/my_hdfs_repository",
"conf.dfs.client.read.shortcircuit": "true"
}
}
创建快照:使用 snapshot API 创建快照并存储到 HDFS 仓库中。例如:
PUT _snapshot/my_hdfs_repository/snapshot_1?wait_for_completion=true
{
"indices": "index_to_backup",
"ignore_unavailable": true,
"include_global_state": false
}
恢复快照:使用 restore API 从 HDFS 仓库中恢复快照。例如:
POST /_snapshot/my_hdfs_repository/snapshot_1/_restore
{
"indices": "index_to_restore",
"ignore_unavailable": true,
"include_global_state": false
}
3、注意事项
- Hadoop 版本兼容性:确保
repository-hdfs
插件与你的 Hadoop 版本兼容。如果不兼容,可能需要替换插件内的 Hadoop jar 包。 - 权限配置:确保 Elasticsearch 有权限在 HDFS 上创建和读取文件。可能需要在 HDFS 上配置适当的权限。
- 网络配置:确保 Elasticsearch 集群可以访问 HDFS 集群的 URI。
- 性能影响:快照和恢复操作可能会影响 Elasticsearch 和 HDFS 的性能,建议在低峰时段进行。
- 版本兼容性:快照只能在兼容的 Elasticsearch 版本之间进行恢复。例如,6.x 版本的快照可以恢复到 7.x 版本,但不是所有版本都兼容。
- 安全性:如果 HDFS 集群启用了安全特性(如 Kerberos 认证),需要确保 Elasticsearch 插件配置了正确的安全凭证。
四、插件管理命令
1、安装插件
bin/elasticsearch-plugin install [插件名称] # 插件名称直接安装
bin/elasticsearch-plugin install file:///path/to/plugin.zip # 文件路径安装
bin/elasticsearch-plugin install https://some.domain/path/to/plugin.zip # 下载链接安装
bin/elasticsearch-plugin install [插件名称1] [插件名称2] ... [插件名称n] # 同时安装多个插件
2、列出已安装插件
bin/elasticsearch-plugin list
3、卸载插件
bin/elasticsearch-plugin remove [插件名称]
sudo bin/elasticsearch-plugin remove [插件名称1] [插件名称2] ... [插件名称n]
4、插件更新
bin/elasticsearch-plugin remove [插件名称]
bin/elasticsearch-plugin install [插件名称]
5、ES docker 安装插件
该文件名为elasticsearch-plugins.yml
,必须与elasticsearch.yml
一起放置在 Elasticsearch 配置目录中。
# vim elasticsearch-plugins.yml
plugins:
- id: analysis-icu
- id: repository-azure
- id: custom-mapper
location: https://example.com/archive/custom-mapper-1.0.0.zip
评论区