Python ElasticSearch一站式教程(高级操作篇)

不懂基础的可以查看>>>>Python ElasticSearch一站式教程(基础篇)

一、函数介绍

  • es.search():按照指定规则查询
    • index:要查询数据的索引
    • size:查询所少条数据
    • from_:从指定索引开始查询
    • filter_path:添加过滤路径,显示指定字段(默认显示所有字段信息)
    • query:要查询数据的规则
      • query={‘match_all’:{}}:查询所有语句
      • query={‘match’:{‘name’:‘杨晨’}}:检索指定字段
      • match:模糊查询(分词)
      • match_phrase:模糊查询(不分词)
      • term:精确单值查询
      • terms:精确多值查询
      • multi_match:多字段查询
        • query:要查询的内容
        • fields:要查询的字段
      • prefix:前缀查询
      • wildcard:通配符查询
        • ?:代表一个字符
        • *:代表0或多个字符
        • 只能查询单一格式的数据,都是英文或都是汉字,两者混合不能使用
      • regexp:正则查询
      • bool:多条件查询
        • must:与(and)
        • should:或(or)
        • must_not:非(no)
      • exists:存在字段查询
      • range:范围查询
        • gt:大于
        • gte:大于等于
        • lt:小于
        • lte:小于等于
      • nested:json数据查询
        • path:指定json数据的字段
        • query:指定查询方式
    • sort:排序查询
      • asc:升序
      • desc:降序

二、查询操作

一、基础查询

from elasticsearch import Elasticsearch

# 实例化一个ip为localhost,端口为9200,允许超时一小时的es对象
es = Elasticsearch(hosts="localhost",port=9200,timeout=3600)

# 查询test索引前10条数据
print(es.search(index='test'))

二、过滤字段查询

from elasticsearch import Elasticsearch

# 实例化一个ip为localhost,端口为9200,允许超时一小时的es对象
es = Elasticsearch(hosts="localhost",port=9200,timeout=3600)

# 只显示test索引的age字段信息
print(es.search(index='test',filter_path=['hits.hits._source.age']))

三、切片查询

from elasticsearch import Elasticsearch

# 实例化一个ip为localhost,端口为9200,允许超时一小时的es对象
es = Elasticsearch(hosts="localhost",port=9200,timeout=3600)

# 查询test索引中,从序号为1的位置查询两条数据
print(es.search(index='test', from_=1, size=2))

四、模糊查询(分词)

from elasticsearch import Elasticsearch

# 实例化一个ip为localhost,端口为9200,允许超时一小时的es对象
es = Elasticsearch(hosts=
利用Python操作Elasticsearch可以使用elasticsearchelasticsearch-dsl这两个库,也可以使用更为简单的es-pandas库。其中,elasticsearch库提供了与Elasticsearch交互的低级接口,而elasticsearch-dsl库则提供了更高级别的查询构建器和对象映射器。es-pandas库则提供了一种将Elasticsearch数据转换为pandas DataFrame的简单方法。 以下是一个使用elasticsearch库进行查询的例子: ```python from elasticsearch import Elasticsearch # 连接到Elasticsearch es = Elasticsearch() # 查询所有文档 res = es.search(index="my_index", body={"query": {"match_all": {}}}) # 输出结果 for hit in res['hits']['hits']: print(hit['_source']) ``` 以下是一个使用elasticsearch-dsl库进行查询的例子: ```python from elasticsearch import Elasticsearch from elasticsearch_dsl import Search # 连接到Elasticsearch es = Elasticsearch() # 创建查询对象 s = Search(using=es, index="my_index").query("match", title="python") # 执行查询并输出结果 response = s.execute() for hit in response: print(hit.title) ``` 以下是一个使用es-pandas库将Elasticsearch数据转换为pandas DataFrame的例子: ```python from es_pandas import es_pandas # 将Elasticsearch数据转换为pandas DataFrame df = es_pandas.DataFrame({ "host": {"field": "host.keyword"}, "response": {"field": "response_time_ms"}, "timestamp": {"field": "@timestamp", "dtype": "datetime64[ns]"} }, es_url="http://localhost:9200", es_index_pattern="my_index-*") # 输出DataFrame print(df.head()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值