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"}

三、条件查询

    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实例已经使用具有足够权限的用户进行了认证,以便能够执行删除索引的操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/613975.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

upload组件封装,支持拖拽文件上传

一、组件封装需要注意什么? 组件化思想:组件应该是独立的、可复用的部件,应该遵循单一职责原则,将组件的功能划分得尽可能细致。 API 设计:组件的 API 设计要合理,要考虑到组件的可定制性和易用性。应该尽可能的提供必要的配置项和事件回调,同时避免提供过多的 API,导…

【启明智显分享】国产自主HMI核心板Model3

Model3是一款高性能的工业级HMI(人机界面)核心板,也是一款纯国产HMI方案,工业级标准,稳定、可靠; 工业级HMI芯片–Model3 纯国产HMI方案 Model3核心板,具有2D加速,PNG解码&…

高效电源测试设备助力自动化测试和数据分析

在当今电子产品的研发和生产过程中,电源测试设备的重要性不言而喻。一款优秀的电源测试设备能够显著提升测试效率,确保电源模块的性能达到设计要求。 纳米软件NSAT-8000电源测试系统是一款自动化电源测试设备,在测试电源模块时,通…

ESP32 + ST7789 LCD

1、准备 ESP32 单片机开发板 ST7789 LCD 模块(240 * 320 像素) 杜邦线 2、接线 LCD功能ESP32VCC 供电电压正极 3.3V 、 5V GND 供电电压负极 GNDIDN / MOSI SPI 接口数据 引脚 23CLK 串行接口时钟信号 18CS 芯片选择引脚;低电平有效 5DC 显…

监控员工上网用什么软件,4款优秀的上网行为监控软件优选

很多员工都会对工作有懈怠心理。 在数字化办公环境中,员工的上网行为直接影响着工作效率、信息安全与合规运营。 为确保企业资源合理利用、防止潜在风险,上网行为监控软件成为企业管理的重要辅助工具。 本文将为您推荐五款优秀的上网行为监控软件&#…

基于STC12C5A60S2系列1T 8051单片机实现一主单片机给一从单片机发送数据的串口通信功能

基于STC12C5A60S2系列1T 8051单片机实现一主单片机给一从单片机发送数据的串口通信功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机串口通信介绍STC12C5A60S2系列1T 8051单片机串口通信的结构基于STC12C5A60S2系列1T 8051单片机串口通信的特殊功能寄存…

棱镜七彩参编《网络安全技术 软件供应链安全要求》国家标准发布

据全国标准信息公共服务平台消息显示,《网络安全技术 软件供应链安全要求》(GB/T 43698-2024)国家标准已于2024年4月25日正式发布,并将于2024年11月1日正式实施。棱镜七彩作为主要编制单位之一参与该国家标准的编制,为…

【Web后端】jsp基础知识_请求转发和重定向

1.jsp基础知识 1.1简介 java server page&#xff0c;运行在服务器端的页面java代码html代码java代码全部都放在<%%>中间 1.2jsp表达式 作用&#xff1a;将动态信息显示在页面上&#xff0c;以字符串方式&#xff0c;返回给浏览器端语法&#xff1a;<%变量或表达式…

itextpdf 7生成pdf(主要是文字和表格,支持中文)

我们经常会遇到要导出pdf的需求,方式有很多种 今天的教程是采用itextpdf的方式生成pdf itextpdf是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF文档&#xff0c;而且可以将Html文件转化为PDF文件。 这里先展示一下效果图 首先在pom.xml中引入相关依赖 <dep…

MotionDiffuse: Text-Driven Human Motion Generation withDiffusion Model # 论文阅读

URL https://arxiv.org/pdf/2208.15001 主页&#xff1a;https://mingyuan-zhang.github.io/projects/MotionDiffuse.html TD;DR 22 年 8 月商汤的文章&#xff0c;引用量 200。基于 SD&#xff0c;任务是输入文本的动作描述&#xff0c;生成对应的动作序列。 已有的 moti…

如何选择合适加密软件来保护信息资产|精选加密软件分析

五款加密软件对比分析&#xff0c;是一项复杂而必要的任务&#xff0c;旨在帮助用户选择最适合其需求的加密工具。在数字化时代&#xff0c;信息安全显得尤为重要&#xff0c;因此&#xff0c;对加密软件的评估与比较显得尤为关键。 首先&#xff0c;我们要考虑的是这些加密软件…

鸿蒙开发-ArkTS语言-XML

鸿蒙开发-UI-web 鸿蒙开发-UI-web-页面 鸿蒙开发-ArkTS语言-基础类库 鸿蒙开发-ArkTS语言-并发 鸿蒙开发-ArkTS语言-并发-案例 鸿蒙开发-ArkTS语言-容器 鸿蒙开发-ArkTS语言-非线性容器 文章目录 前言 一、XML概述 二、XML生成 三、XML解析 1.解析XML标签和标签值 2.解析XML属性…

ENVI实战—一文教会你开展辐射校正和大气校正的方法

实验1&#xff1a;辐射校正 目的&#xff1a;在ENVI中&#xff0c;掌握辐射校正的方法 过程&#xff1a; ①导入影像&#xff1a;在ENVI中按照“文件→打开为→光学传感器→Landsat→带有元数据的GeoTIFF”的过程&#xff0c;打开多光谱数据&#xff08;图1&#xff09;。 ②…

融合Transformer与CNN,实现各任务性能巅峰,可训练参数减少80%

论文er看过来&#xff0c;今天给各位推荐一个热门创新方向&#xff1a;CNNTransformer。 众所周知&#xff0c;CNN通过多层卷积自动学习空间层级特征&#xff0c;能够有效提取图像局部特征。而Transformer通过自注意力机制全局建模&#xff0c;能够有效处理长距离依赖关系。 …

MySQL innodb_buffer_pool_size 相关常用语句

对于MySQL速度慢的问题&#xff0c;除了优化 SQL 以外&#xff0c;应该必须优先想到的即使 MySQL 数据库的 innodb_buffer_pool_size 配置问题。 一般来说&#xff0c;innodb_buffer_pool_size 的默认大小都是很小的&#xff0c;尤其是 win 下其默认大小更是只有离谱的 8M。Li…

在做题中学习(54):点名

LCR 173. 点名 - 力扣&#xff08;LeetCode&#xff09; 此题有不同的几种解法&#xff1a; 解法一&#xff1a;暴力枚举 O(n); 解法二&#xff1a;哈希表 把原数组丢入哈希表&#xff0c;遍历哈希表&#xff0c;看看哪个数值为0即可。 O(n)空间O(n)时间 解法三&…

12、FreeRTOS信号量(semaphore)

文章目录 一、信号量的特性1.1 使用场景1.2 什么是信号量1.3 信号量和队列的区别1.4 两种信号量的对比 二、二值信号量/计数信号量2.1 什么是二值信号量2.2 什么是计数信号量2.2 (二值信号量/计数信号量) 相关API 三、互斥量(mutex)3.2 什么是优先级翻转3.3 互斥量的使用场合3.…

Kotlin基本特性

目录 函数 if when 循环 面向对象 继承 主构造函数 接口 修饰符 ​编辑数据类 单例类 Lambda编程 集合 lambda用法 常见函数式API 空指针 判空辅助工具 字符串内嵌表达式 函数 fun add1(a:Int,b:Int):Int{return ab }fun add2(a:Int,b:Int):Int ab // 只…

【JVM】ASM开发

认识ASM ASM是一个Java字节码操纵框架&#xff0c;它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件&#xff0c;也可以在类被加载入虚拟机之前动态改变类行为&#xff0c;ASM从类文件中读入信息后能够改变类行为&#xff0c;分析类信息&#xff…

KBU1010-ASEMI新能源专用KBU1010

编辑&#xff1a;ll KBU1010-ASEMI新能源专用KBU1010 型号&#xff1a;KBU1010 品牌&#xff1a;ASEMI 封装&#xff1a;KBU-4 最大重复峰值反向电压&#xff1a;1000V 最大正向平均整流电流(Vdss)&#xff1a;10A 功率(Pd)&#xff1a;中小功率 芯片个数&#xff1a;4…
最新文章