ElasticSearch的python api以及dev tool方式的基本操作

一、环境要求

根据es服务器版本,下载es的python api包,我们这里的环境为:
python3.8,
下载的elastic search版本为7.6.0,安装方式:

pip install elasticsearch==7.6.0

二、es操作及python代码

1、获取es实例,连接到es

如果没有额外的安全验证,需要指定的内容包括:集群ip地址(list类型),端口号(每个节点的端口号可能不同,这里是字符串,代表所有节点的端口号是一样的),用户名,密码。

class ElasticSearchHandler():
    def __init__(self, host: list, port: str, username: str, password: str):
        self.port = port
        self.host = host
        self.username = username
        self.password = password
        self.es = self.create()


    # 新建es实例,并返回
    def create(self) -> Elasticsearch:
        context = ssl._create_unverified_context()

        addrs = []
        for host in self.host:
            addr = {'host': host, 'port': self.port}
            addrs.append(addr)

        if self.username and self.password:
            elasticsearch = Elasticsearch(addrs, http_auth=(self.username, self.password), scheme="https", ssl_context=context)
        else:
            elasticsearch = Elasticsearch(addrs)
        return elasticsearch

2、es服务器的增删改查操作

1)创建一个index
    # 创建一个index,并定义index的mapping和结构
    def create_index(self, index_name, body):
        response = self.es.indices.create(index=index_name, body=body)
        print(response)

在devtool创建:

PUT /index1
{
    "mappings": {
        "properties": {
            "field1": {
                "type": "text"
            },
            "field2": {
                "type": "text"
            }
        }
    }
}
2)删除指定index
    def delete_index(self, index_name):
        res = self.es.indices.delete(index=index_name)
        print.info(res)

在devtool中删除

DELETE /my_index
3)获取指定index的数据
    def get_all_data(self, index_name):
        query_body = {
            "query": {
            "match_all": {}
            }
        }
        response = self.es.search(index=index_name, body=query_body)
        return response

dev tool中执行

GET /myindex/_search
{
  "query": {
    "match_all": {}
  }
}
4)数据写入,以bulk的方式
   # 以bulk的方式写入数据, 可以多条也可以一条
    def bulk_insert(self, index_name, bulk_data):
        response = self.es.bulk(index=index_name, body=bulk_data)
        print("Bulk operation response:", response)
       
 	 # 写入数据的格式为
  	# 子问题可能是多个,存储的是列表
	index_name = 'my_index'
	bulk_data = [
	{"index": {"_index": index_name}},
	{"field1": "value1", "field2": "value2", "field3": "value3"}
	]
	es_handler.bulk_insert(index_name=index_name, bulk_data=bulk_data)  

在dev tool当中写入的话,格式为,下面的语句写入了两条记录:

POST vector_qt_greeting/_bulk   
{	"index": {"_index": "my_index"}}
{"field1": "value1", "field2": "value2"}
{	"index": {"_index": "my_index"}}
{"field1": "value3", "field2": "value4"}
5)删除一条数据
    def delete_record(self, index_name , query_body):
        response = self.es.delete_by_query(index=index_name, body=query_body)
        return response


	index_name = 'my_index'
	body = {
	  "query":{
	    "term":{
	      "_id":1
	    }
	  }
	}
	es_handler.delete_record(index_name=index_name, bulk_data=body ) 

在dev tool当中写入的话,格式为:

POST my_index/_delete_by_query
{
  "query":{
    "term":{
      "_id":1
    }
  }
}

三、条件查询

    def query_most_n_relate_index(self, index_name, query_field, query_content, size=1):
        body = {
            "size": size,
            "from": 0,
            "query": {
                "match": {
                    # "查询字段":  "查询内容"
                    query_field: query_content
                }
            }
        }
        result = self.es.search(index=index_name, body=body)
        return result

使用dev tool查询

GET /my_index/_search
{
            "size": 2,
            "from": 0,
            "query": {
                "bool":{
                "should":[
                {"match": {
                "field1": {
                    "query": "value1"
                }
                }}
                ]
                }
            }
        }

es的查询方式很灵活,可以单独写一篇文章, 就先不列在这里面了,它可以模糊查询,可以计算文档距离,也可以精确查询,可以说非常丰富灵活。

附:dev tool是什么?如何使用?

在Elasticsearch的Dev Tools(Kibana Dev Tools)中删除索引是一个简单的过程。Kibana Dev Tools提供了一个用户友好的界面,允许你直接与Elasticsearch集群交互,执行各种操作,包括删除索引。

以下是使用Kibana Dev Tools删除指定索引的步骤:

  1. 打开Kibana:
    在你的Web浏览器中打开Kibana的Web界面。通常,Kibana运行在http://localhost:5601(如果你使用的是默认端口)。

  2. 进入Dev Tools:
    在Kibana的左侧菜单中找到“Dev Tools”(开发者工具)并点击进入。

  3. 选择索引:
    在Dev Tools界面的顶部,确保你已经选择了包含你想要删除的索引的Kibana空间或Elasticsearch索引模式。

  4. 编写Delete Index请求:
    在Dev Tools的右侧窗格中,编写一个HTTP DELETE请求来删除索引。例如,如果你要删除名为my_index的索引,请求应该如下所示:

    DELETE /my_index
    

    只需将my_index替换为你想要删除的实际索引名称。

  5. 执行请求:
    编写完请求后,点击“Execute”(执行)按钮,Dev Tools将向Elasticsearch发送请求并删除指定的索引。

  6. 检查结果:
    执行完请求后,Dev Tools会显示响应结果。如果索引删除成功,响应体将包含一个确认信息。

如果你的Elasticsearch集群启用了安全性功能,你可能需要确保你的Kibana实例已经使用具有足够权限的用户进行了认证,以便能够执行删除索引的操作。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值