要用Elasticsearch存取数据嘛,那肯定要写代码的,我喜欢写python,不过我boss用Java的QAQ。
所以下面记一下python对Elasticsearch的操作。
python中对Elasticsearch的使用:
安装
首先就不用说了,安装Elasticsearch的接口库
pip install Elasticsearch
其实如果不用这个Elasticsearch库,使用普通的可以发送请求的库比如urllib,requests等,只要是可以发送http请求的库,都可以操作Elasticsearch。就是可能麻烦一点。
不过既然人家都给封装好了Elasticsearch专用库,那就用嘛。
import
from elasticsearch import Elasticsearch
然后建立连接
#连接Elasticsearch。这里的192.168.*.*是对我们家的服务器打的码,你可以连接你自己的服务器集群。
#端口默认一般你要是部署Elasticsearch的时候没改过那就是9200
#如果改过的话自己查一下是哪个端口
es = Elasticsearch(['192.168.*.*','192.168.*.*','192.168.*.*'],port=9200)
#有用户名和密码的话加入 http_auth=('user', 'password') 参数
es = Elasticsearch(['192.168.*.*','192.168.*.*','192.168.*.*'],http_auth=('user', 'password'),port=9200)
搜索
下面这条搜索语句会以json的格式直接返回搜索结果。
datas=es.search(index='你的数据库')
#常见参数:
#index - 索引名
#from_ - 查询起始点 默认0
#size - 指定查询条数 默认10
#q - 查询指定匹配 使用Lucene查询语法
#body - 使用Query DSL
搜索的函数主要就是这个es.search,里面可以填不同的参数。主要有以下两种搜索模式
Query DSL模式
- query DSL就是kibana的DevTOOLs里面填写的body搜索格式。使用query DSL搜索要指定body。
- 使用query DSL的使用不能使用参数q,只能使用参数body。
body={
"query":
{
"match_all":{}
}
}
data=es.search(index='库名',size=100,from_=10,body=body)
具体的这个body怎么写,query DSL怎么用,我在下一篇再写吧。
Lucene查询语法
- 相对的,lucence查询语法只用到q参数,不能用到body参数。
- 具体这个怎么用我还没用过,等我会了再接着写。