Python操作ES集群API

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

学习B站博主教程笔记:

最新版适合自学的ElasticStack全套视频(Elk零基础入门到精通教程)Linux运维必备---ElasticSearch+Logstash+Kibana精讲_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1VMW3e6Ezk/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=e539f90574cdb0bc2bc30a8b5cb3fc00

1、创建索引

cs 复制代码
 #!/usr/bin/env python3
 ​
 from elasticsearch import Elasticsearch
 ​
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 msg_body = {
     "settings": {
         "index": {
             "number_of_replicas": "0",
             "number_of_shards": "5"
         }
     },
     "mappings": {
         "properties": {
             "ip_addr": {
                 "type": "ip"
             },
             "name": {
                 "type": "text"
             },
             "id": {
                 "type": "long"
             },
             "hobby": {
                 "type": "text"
             },
             "email": {
                 "type": "keyword"
             }
         }
     },
     "aliases": {
         "cluster-elstaicstack-linux-python": {},
         "cluster-linux-python": {}
     }
 }
 ​
 result = es.indices.create(index="cluster-linux-2024", body=msg_body)
 print(result)
 ​
 es.close()

2、写入单个文档

cs 复制代码
 #!/usr/bin/env python3
 ​
 import sys
 from elasticsearch import Elasticsearch
 ​
 # 设置字符集,兼容Python2
 reload(sys)
 sys.setdefaultencoding('utf-8')
 ​
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 # 写入单个文档
 msg_body = {
     "name": "Jason Yin",
     "ip_addr": "120.53.104.136",
     "blog": "https://blog.yinzhengjie.com/",
     "hobby": ["k8s", "docker", "elk"],
     "email": "yinzhengjie@qq.com",
     "id": 10086,
 }
 ​
 ​
 result = es.index(index="cluster-linux-2024", doc_type="_doc", body=msg_body)
 print(result)
 ​
 es.close()

3、写入多个文档

cs 复制代码
 #!/usr/bin/env python3
 ​
 import sys
 from elasticsearch import Elasticsearch
 from elasticsearch.helpers import bulk
 ​
 # 设置字符集,兼容Python2
 reload(sys)
 sys.setdefaultencoding('utf-8')
 ​
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 # 批量写入多个文档
 doc2 = {
     "id": 10010,
     "name": "老男孩",
     "age": 45,
     "hobby": ["下棋", "抖音", "思想课"],
     "ip_addr": "10.0.0.101",
     "email": "oldboy@qq.com"
 }
 ​
 doc3 = {
     "id": 10011,
     "name": "李导",
     "age": 32,
     "hobby": ["三剑客", "打枪"],
     "email": "lidao@qq.com",
     "ip_addr": "10.0.0.201"
 }
 ​
 many_doc = [doc2, doc3]
 ​
 write_number, _ = bulk(es, many_doc, index="cluster-linux-2024")
 print(write_number)
 ​
 es.close()

4、全量查询

cs 复制代码
 #!/usr/bin/env python3
 ​
 from elasticsearch import Elasticsearch
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 # 全量查询
 result = es.search(index="cluster-linux-2024")
 print(result)
 print(result["hits"])
 print(result["hits"]["hits"])
 print(result["hits"]["hits"][0]["_source"])
 print(result["hits"]["hits"][0]["_source"]["name"])
 print(result["hits"]["hits"][0]["_source"]["hobby"])
 ​
 es.close()

5、查看多个文档

cs 复制代码
 #!/usr/bin/env python3
 ​
 import sys
 from elasticsearch import Elasticsearch
 ​
 # 设置字符集,兼容Python2
 reload(sys)
 sys.setdefaultencoding('utf-8')
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 # 获取多个文档
 doc1 = {'ids': ["5gIk24AB2f3QZVpX1AxN", "5AIk24AB2f3QZVpX1AxN"]}
 res = es.mget(index="cluster-linux-2024", body=doc1)
 print(res)
 print(res['docs'])
 ​
 es.close()

6、DSL查询

cs 复制代码
 #!/usr/bin/env python3
 ​
 import sys
 from elasticsearch import Elasticsearch
 ​
 # 设置字符集,兼容Python2
 reload(sys)
 sys.setdefaultencoding('utf-8')
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 # DSL语句查询
 dsl = {
     "query": {
         "match": {
             "hobby": "王岩"
         }
     }
 ​
 }
 ​
 # DSL语句查询
 # dsl= {
 #     "query": {
 #         "bool": {
 #             "should": [
 #                 {
 #                     "match": {
 #                         "type": "pets"
 #                     }
 #                 },
 #                 {
 #                     "match": {
 #                         "type": "lunxury"
 #                     }
 #                 }
 #             ],
 #             "minimum_should_match": 1,
 #             "filter": {
 #                 "range": {
 #                     "price": {
 #                         "gt": 1500,
 #                         "lt": 2500
 #                     }
 #                 }
 #             }
 #         }
 #     },
 #     "sort": {
 #         "price": {
 #             "order": "desc"
 #         }
 #     },
 #     "_source": [
 #         "title",
 #         "price",
 #         "producer"
 #     ]
 # }
 #
 # res = es.search(index="shopping",body=dsl)
 # print(res)
 res = es.search(index="cluster-linux-2024", body=dsl)
 print(res)
 ​
 es.close()

7、查看索引是否存在

cs 复制代码
 #!/usr/bin/env python3
 ​
 from elasticsearch import Elasticsearch
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 # 判断索引是否存在
 print(es.indices.exists(index="cluster-shopping"))
 ​
 es.close()

8、修改文档

cs 复制代码
 #!/usr/bin/env python3
 ​
 from elasticsearch import Elasticsearch
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 new_doc = {'doc': {"hobby": ['下棋', '抖音', '思想课', "Linux运维"], 'address': '中华人民共和国北京市昌平区沙河镇老男孩教育'}}
 ​
 # 更新文档
 res = es.update(index="cluster-linux-2024", id='5gIk24AB2f3QZVpX1AxN', body=new_doc)
 print(res)
 ​
 es.close()

9、删除单个文档

cs 复制代码
 #!/usr/bin/env python3
 ​
 from elasticsearch import Elasticsearch
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 ​
 # 删除单个文档
 result = es.delete(index="cluster-linux-2024", id="5gIk24AB2f3QZVpX1AxN")
 print(result)
 ​
 es.close()

10、删除索引

cs 复制代码
 #!/usr/bin/env python3
 ​
 from elasticsearch import Elasticsearch
 es = Elasticsearch(['192.168.1.10:9200', '192.168.1.11:9200', '192.168.1.12:9200'])
 # 删除索引
 result = es.indices.delete(index="cluster-linux-2024")
 print(result)
 ​
 es.close()

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。

学习永无止境,让我们共同进步!!

相关推荐
小陈工20 分钟前
2026年3月31日技术资讯洞察:AI智能体安全、异步编程突破与Python运行时演进
开发语言·jvm·数据库·人工智能·python·安全·oracle
老李的勺子1 小时前
Agent 记忆失效的 5 种方式:完整排查复盘
python·llm
Leo655351 小时前
动态透视报表 + 查询接口 + Excel导出
开发语言·windows·python
清水白石0081 小时前
pytest Fixture 设计实战指南:作用域、依赖链、自动清理与测试资源高效复用
python·pytest
umeelove352 小时前
Java进阶(ElasticSearch的安装与使用)
java·elasticsearch·jenkins
tottoramen2 小时前
如何安装龙虾
python
QC·Rex2 小时前
AI Agent 任务规划实战:从 ReAct 到 Plan-and-Solve 的完整指南
人工智能·python·react
ノBye~2 小时前
Docker Compose+Jenkins自动化部署全流程
git·docker·jenkins
kcuwu.3 小时前
Python面向对象:封装、继承、多态
开发语言·python
YuanDaima20483 小时前
LangChain基础配置与对话模型实战
人工智能·python·langchain·大模型·智能体·langgraph