ElasticSearch 图片搜索插件 (一)


一, 关于ElasticSearch
ElasticSearch 是基于 Lucene 的分布式搜索引擎。 虽然Lucene 从 版本6 开始内部使用了bkd树使得多维搜索问题得到显著优化,但是 ElasticSearch 实际只在 numeric range 问题上使用了bkd树。

二,官方的图片搜索插件 
官方网页地址: https://www.elastic.co/blog/found-getting-started-with-lire-and-elasticsearch

该项目年久失修,正式发行版本只支持到ElasticSearch 1.0.1 ,readme也不能正常使用,而官方网页上介绍的上传图片是编程实现的,不利于尝试。所以下面介绍的使用步骤也是我一点点摸索出来的。

1,下载 ElasticSearch 1.0.1, 解压,cd到目录,执行 ./bin/plugin -install com.github.kzwang/elasticsearch-image/1.2.0安装插件。

2,执行./bin/elasticsearch启动服务器。

3,创建节点——打开cmd窗口,执行命令:

curl -XPOST 'https://localhost:9200/images' -d '{    "settings" : {        "number_of_shards" : 3    },    "mappings" :{    "image": {        "properties": {            "name": {                "type": "string"            },            "image": {                "type": "image",                "feature": {                    "CEDD": {                        "hash": "BIT_SAMPLING"                    },                    "JCD": {                        "hash": ["BIT_SAMPLING", "LSH"]                    },                    "FCTH": {}                }            }        }    }}}'


4,上传图片——执行命令:

curl -XPOST 'https://localhost:9200/images/image' -d '{ "name":"<图片名字>", "image":"<图片的base64编码>"}'

 

其中<图片名字>替换成图片的名字。

其中<图片的base64编码>替换成某张图片的base64编码,网上有很多在线工具可以用,比如“http://base64image.org/”。

可以多上传几张图片来测试搜索效果。

5,搜索——执行命令:

curl -XPOST 'https://localhost:9200/images/_search' -d '{"fields":["name"],"query":{"image":{"image":{"feature":"CEDD","image":"<要搜的图片的base64编码>","hash":"BIT_SAMPLING","limit":10}}}}'


其中<要搜的图片的base64编码>替换成要搜索的那张图片的base64编码。

以上3/4/5步也可以不使用curl,借助于ElasticSearch的另一个核心插件head中的复合查询界面与服务器通讯。head的安装命令是
./bin/elasticsearch-plugin install mobz/elasticsearch-head

上面几步执行完就可以看到搜索结果类似这张截图:

ElasticSearch 图片搜索插件 (一)_第1张图片

 

三,官方的图片搜索插件只支持到1.0.1,而ElasticSearch 版本目前已经到了6。网上已经有几个支持ElasticSeach 5 以上版本的图片搜索插件项目,比如这个基于tensorflow的https://github.com/tuan3w/visual_search。ES 版本5和6也有一些区别,ES 6中 script 需要继承的类是 SearchScript。

 

四,使用 es 做相似图片搜索在速度上并不理想,总是要将所有文档做一个评分才能得出最相似的那个。 

 

 

你可能感兴趣的:(音视频技术)