ELasticSearch和python对接快速使用指南

项目环境

window10 + python3.7 + ElasticSearch6.3.2

写作目的

在一个基于python web系统的开发过程中,被指定要求使用elasticSearch数据库,但自身仅有MySQL使用经验没有dsl语句的编写经验,其学习成本又比较高,最后是发现了一个可以将SQL语句转DSL语句,才得以快速完成项目需求。特此记录踩坑历程。

使用过程

1.安装ElasticSearch

总的来说,需要先配置好Java环境,配置好环境变量即可。详参——>elasticsearch安装与使用,此文中所说的ElasticSearch-head不安装也可。

2.安装elasticsearch-sql

进入elasticsearch-sql官网,根据教程及相应指令下载对应版本的elasticsearch-sql,本文中使用的版本为6.3.2,所以选择如下命令:

./bin/elasticsearch-plugin install https://github.com/NLPchina/elasticsearch-sql/releases/download/6.3.2.0/elasticsearch-sql-6.3.2.0.zip

下载对应的网页访问工具(根据教程提示,本文选择elasticsearch sql site chrome extension方式),此种方式需要修改ElasticSearch中的相应配置,具体见elasticsearch sql

注意: Github上给出的elasticsearch sql site chrome extension对应于elasticsearch-sql最新版,但elasticsearch版本不同从而其中的sql访问接口也就不同,所以需要修改elasticsearch sql site chrome extension包中controller.js文件的中的sql访问接口。

具体的不同已在elasticsearch-sql中的readme中给出,如下:
在这里插入图片描述
然后就可以elasticsearch sql site chrome extension中的index主页进行sql查询了,而且还可将sql转换成dsl语句
在这里插入图片描述

3.python中使用ElasticSearch

安装python版本ElasticSearch,注意版本对应

编写Dsl语句即可,不会Dsl语句的,可以使用先前的elasticsearch-sql工具进行转换。DSL语句例子见:python 查询 elasticsearch 常用方法(Query DSL)

SQL中的like语句,建议使用DSL中的match语句(需手动在生成的DSL中修改)。在SQL中进行GRUOP BY对字段进行聚类时,需使用字段的keyword形式,如GRUOP BY a.keyword

参考

写入数据

安装中文分词插件elasticsearch-analysis-ik

python使用sql访问ES

猜你喜欢

转载自blog.csdn.net/qq_35268841/article/details/114447893