python多方式操作elasticsearch介绍

1. requests模块操作ES

requests 是一个 Python HTTP 库,它简化了发送 HTTP 请求和处理响应的过程。通过 requests 模块,开发人员可以轻松地与 Web 服务进行通信,包括获取网页内容、执行 API 请求等。requests 提供了简洁而直观的 API,使得发送 GET、POST、PUT、DELETE 等类型的请求变得容易。它支持各种认证方式、持久连接、会话管理、文件上传等功能,同时提供了丰富的响应处理方法,包括 JSON 解析、内容解码、状态码检查等。由于其简单易用的特点,requests 成为了 Python 社区中最受欢迎的 HTTP 库之一,被广泛应用于网络爬虫、Web 开发和数据采集等场景。

  • 使用requests库操作ElasticSearch的基本方法 1.创建/更新文档:使用PUT方法 2.获取文档:使用GET方法 3.删除文档:使用DELETE方法 4.搜索文档:使用GET方法,并在URL中添加搜索参数 pip install requests

 

 

2. elasticsearch模块操作ES

elasticsearch 是 Python 中用于与 Elasticsearch 进行交互的官方库,它提供了一种方便的方式来执行各种操作,包括索引、搜索、删除文档等。这个库封装了与 Elasticsearch REST API 的交互细节,使得开发人员能够更轻松地与 Elasticsearch 集群进行通信。

使用 elasticsearch 库,您可以轻松地连接到 Elasticsearch 集群,并执行各种操作。

  1. 连接到 Elasticsearch 集群:使用 Elasticsearch 类连接到 Elasticsearch 集群,可以指定多个节点,并支持 HTTP Basic 认证和其他连接参数。
  2. 索引文档:使用 index 方法可以将文档索引到 Elasticsearch 中,您可以指定索引名称、文档类型、文档 ID 和文档内容。
  3. 获取文档:使用 get 方法可以根据索引名称、文档类型和文档 ID 获取特定文档的内容。
  4. 搜索文档:使用 search 方法可以执行搜索操作,您可以指定查询条件、排序规则、分页参数等。
  5. 删除文档:使用 delete 方法可以根据索引名称、文档类型和文档 ID 删除特定文档。
  6. 批量操作elasticsearch 库支持批量索引、更新和删除文档,可以显著提高性能。
  7. 异常处理elasticsearch 库提供了对 Elasticsearch 返回的各种错误和异常的处理机制,使得开发人员能够更好地处理异常情况。
  8. 灵活性elasticsearch 库允许您以不同的方式指定查询条件、索引文档和执行其他操作,以满足各种需求。

pip install elasticsearch

2-1. elasticsearch模块基本用法

 

2-2. elasticsearch模块业务使用方式

README.md :

ElasticSearch_prd.py 完整代码:

代码运行日志内容示例:

elasticsearch_dsl.log

验证执行过程是否有问题,可以先不执行delete相关方法

执行代码后,在kibana上查询数据验证

 

 

3. elasticsearch-dsl模块使用

3-1. 什么是 elasticsearch-dsl?

Elasticsearch DSL(Domain Specific Language 领域特定语言)是 Elasticsearch 官方提供的一个 Python 客户端库,它允许开发者以一种更加 Pythonic 和直观的方式与 Elasticsearch 进行交互和查询。DSL 不是一种编程语言,而是一种专门针对某一领域(如 Elasticsearch 查询语言)设计的语言。在 Elasticsearch 中,DSL 用于构建复杂的搜索查询、聚合操作和过滤条件。

Elasticsearch DSL 提供了一个面向对象的接口,使得开发者可以使用 Python 中的类和方法来构建 Elasticsearch 查询,而不必直接编写 JSON 查询体。这种方式使得代码更加清晰易懂,并且可以利用 Python 的强大功能来构建动态查询。通过 Elasticsearch DSL,开发者可以以更加高效和灵活的方式构建 Elasticsearch 查询,同时还能够利用 Python 生态系统中丰富的工具和库来处理查询结果。

Elasticsearch DSL 使得 Python 开发者简化了与 Elasticsearch 的交互过程,并提供了更加直观和易于理解的接口。

 

3-2. elasticsearch-dsl特点

 

3-3. elasticsearch-dsl 的基本构件

在 elasticsearch-dsl 中,主要的构件包括:

 

3-4. elasticsearch-dsl使用

elasticsearch-dsl模块功能非常多,常见功能如表

方法功能代码示例
Search(index)创建一个搜索请求对象s = Search(index='my_index')
query(...)设置查询条件s = s.query('match', title='python')
filter(...)设置过滤条件s = s.filter('term', category='programming')
sort(...)设置排序条件s = s.sort('title')
source(...)设置返回字段s = s.source(['title', 'category'])
highlight(...)设置高亮显示字段s = s.highlight('title')
aggs.bucket(...)添加一个聚合桶s.aggs.bucket('by_category', 'terms', field='category')
aggs.metric(...)添加一个聚合指标s.aggs.metric('avg_age', 'avg', field='age')
execute()执行搜索请求response = s.execute()
response.hits.total.value获取搜索结果的总数total_hits = response.hits.total.value
response.hits.hits获取搜索结果的文档列表hits = response.hits.hits
response.aggregations获取聚合结果aggs_result = response.aggregations
Q('query_string', query=...)创建一个查询字符串查询q = Q('query_string', query='python')
A('terms', field=...)创建一个术语聚合a = A('terms', field='category')
Index(name)创建一个索引对象index = Index('my_index')
index.create()创建索引index.create()
index.delete()删除索引index.delete()

 

3-4-1. 匹配查询(Match Query)

匹配查询用于查找包含指定文本的文档。

 

3-4-2. 多字段匹配查询(Multi-match Query)

多字段匹配查询用于在多个字段中查找包含指定文本的文档。

 

3-4-3. 范围查询(Range Query)

范围查询用于查找字段值在指定范围内的文档。

 

3-4-4. 通配符查询(Wildcard Query)

通配符查询用于查找符合指定模式的文档。

 

4. Elasticsearch服务python日常巡检监控

es_check.py脚本内容

日志输出:

 

5. Python同步MySQL数据至ElasticSearch

MySQL样例数据准备:

python同步脚本MySQL_to_ElasticSearch.py

验证结果:

 

 

6. Python同步Hive数据至ElasticSearch

Hive样例数据准备:

python同步脚本Hive_to_ElasticSearch.py

 

7. ElasticSearch大量数据写入实现

 

Bigdata2ES.py脚本内容: