前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除
学习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()
致谢
在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。
学习永无止境,让我们共同进步!!