0X00、前言
Elasticsearch是一个基于Lucene库的搜索引擎,它提供了一个分布式、支持多租户的全文搜索引擎。随着业务的飞速发展,对于搜索的需求也会增加,比如:搜索图片、相似向量等。我们可以利用 ElasticSearch 良好的插件规范、丰富的查询函数、分布式可扩展的能力开发一个脚本插件使其支持向量检索。本教程主要参考StaySense的开源项目(见参考1)。
本教程演示环境配置:
- Python: 3.6.4
- Java: 1.8
- Maven
- Docker&Elaseticsearch: 6.7.0
通过Docker部署Elasticsearch:6.7.0参考:Elasticsearch安装使用
0X01、插件开发
项目地址:https://github.com/liheyou/ImageSimilarityPlugin
项目整体目录:
1、pom.xml
主要配置一些项目环境、添加依赖、打包方式等,完整配置查看项目文件。
2、plugin.xml
由于 Elasticsearch 要求自定义插件需要打包成 zip 文件,我们可以配置 Maven Assembly 插件使其自动生成,完整配置查看项目文件。
3、plugin-descriptor.properties
根据 Elasticsearch 要求,所有的插件必须包含一个名为 plugin-descriptor.properties 的插件描述文件,对其内容有要求且必须放置在 elasticsearch 目录下。我们在 src/main/resources 目录下创建 plugin-descriptor.properties 并添加内容如下:
name=${elasticsearch.plugin.name}
description=${elasticsearch.plugin.description}
version=${project.version}
classname=${elasticsearch.plugin.classname}
java.version=${maven.compiler.target}
elasticsearch.version=${elasticsearch.version
# extended.plugins=