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 = portself.host = hostself.username = usernameself.password = passwordself.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.mzph.cn/web/10201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 每日一题 2024/5/6-2024/5/12

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 5/6 741. 摘樱桃5/7 1463. 摘樱桃 II5/8 2079. 给植物浇水5/9 2105. 给植物浇水 II5/10 2960. 统计已测试设备5/11 2391. 收集垃圾的最少总时间5/12 5/6 741. 摘樱桃 从起点…

当下是风口的热门兼职副业,月入3万问题不大,附保姆教程!

近年来,短视频行业呈现出迅猛的发展势头,已经成为当下最受欢迎的一种形式。甚至连曾经的电商巨头京东也开始积极布局这一领域,投入巨资20亿元进行深入耕耘。 周周近财:让网络小白少花冤枉钱,赚取第一桶金 不知道您是…

第 8 章 机器人底盘Arduino端入口(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.2 底盘实现_01Arduino端入口 ros_arduino_bridge/ros_arduino_firmware/src/libraries/ROSArduinoBridge…

Android APP读写外置SD卡无权限 java.io.IOException: Permission denied

在物联网应用里,app需要对挂载SD卡读写文件,从 Android 4.4(KitKat)版本开始,Google 引入了一项名为 "Storage Access Framework" 的新功能,该功能限制了应用对外部存储的直接读写权限,要不然就是…

引入Minio

前置条件 官网:https://www.minio.org.cn/download.shtml#/kubernetes 命令 # 查看系统上的网络连接和监听端口信息 netstat -tpnl # 检查系统的指定端口占用情况 sudo netstat -tuln | grep 9000systemctl status firewalld # 临时关闭 systemctl stop firewall…

生信人写程序1. Perl语言模板及配置

生物信息领域常用语言 个人认为:是否能熟悉使用Shell(项目流程搭建)R(数据统计与可视化)Perl/Python/Java…(胶水语言,数据格式转换,软件间衔接)三门语言是一位合格生物信息工程师的标准。 生物信息常用语言非常广泛,我常用的有…

在macOS中开发的Django项目部署到局域网的Win10服务器上

由于windows10是日常办公电脑,没有服务器基本环境,部署工程耗费不少时间,记录一下。 1、安装Python 访问Python官方下载页面:Python Downloads,下载适用于Windows的安装程序并按照提示进行安装。开发环境python版本是…

Python可以自学但是千万不要乱学,避免“埋头苦学”的陷阱!

前言 Python可以自学但是千万不要乱学! 归根结底因为学习是个反人性的过程! 复盘没学下去的网课,都有以下特点: 😅 臣妾听不懂啊! 初次接触编程遇到太多抽象高深的概念,不了解老师口中的一个…

基于51单片机的二氧化碳检测及调节系统仿真

基于51单片机的二氧化碳检测及调节系统 (仿真+程序) 功能介绍 具体功能: 1.二氧化碳传感器测得二氧化碳数据后经过单片机处理。 2.LCD1602实时显示,第一行显示测得的浓度值,第二行显示报警阈值。 3.测…

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

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

Taro 快速开始

大家好我是苏麟 , 今天聊聊Trao. 官网 : Taro 介绍 | Taro 文档 (jd.com) 点击快速开始 全局安装 CLI 初始化一个项目 选择配置 : 根据自己需求选择 安装失败先不用管 , 用前端工具打开项目 npm install 安装 , 显示安装失败 怎么解决 ? : 查看报错信息 百度 , 问 AI 工具 运…

算法练习第六十天|84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 柱状图中最大的矩形 class Solution {public int largestRectangleArea(int[] heights) {int[] newHeight new int[heights.length 2];System.arraycopy(heights, 0, newHeight, 1, heights.length);newHeight[heights.length1] 0;newHeight[0] 0;…

算法学习笔记(最短路——spfa)

前置:bellman-ford s p f a spfa spfa是 B e l l m a n − F o r d Bellman-Ford Bellman−Ford算法的改进。在 B e l l m a n − F o r d Bellman-Ford Bellman−Ford中,我们在每一轮中枚举了每一条边,但是实际上,在上一轮中没有…

睿尔曼机械臂ROS控制

下载git工程 git clone https://github.com/RealManRobot/rm_robot.git安装配置 catkin build rm_msgs source devel/setup.bash catkin build source setup.bash这里注意,如果采用setup.sh多半不会成功,必须要source setup.bash文件,ros才…

train_gpt2_fp32.cu

源程序 llm.c/test_gpt2_fp32.cu at master karpathy/llm.c (github.com) #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #include <assert.h> #include <float.h> #include <string.h> #include…

二叉树的最小深度和二叉树的节点数

二叉数的最小深度&#xff1a; 思路&#xff1a;和最大深度一样需要用到回溯递归的方法 代码大致内容 判断函数是否为空&#xff0c;如果是空return 0&#xff1b; 定义一个变量接收递归函数返回的值&#xff08;左&#xff09; 定义一个变量接收递归函数返回的值&#xf…

力扣每日一题-收集垃圾的最少总时间-2024.5.11

力扣题目&#xff1a;收集垃圾的最少总时间 题目链接: 2391.收集垃圾的最少总时间 题目描述 代码纯享版 class Solution {public int garbageCollection(String[] garbage, int[] travel) {int sum 0;int last_M -1,last_P -1, last_G -1;for(int i 0; i < garbage.…

以Azure为例的SSO

由于文章的篇幅有限&#xff0c;无法将全部的代码贴上来&#xff0c;如想要看完整案例&#xff0c;请在公众号文章中留言(其他平台很少看…毕竟最近印度同事的UI组件库搞得我好烦) 1.关于SSO 单点登录又称之为SSO,全称为 Single Sign On &#xff0c;一般在多个应用系统中&…

Github2024-05-10开日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-05-10统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目4JavaScript项目1Lua项目1C项目1Rust项目1Dart项目1 RustDesk: 用Rust编写的开源远…

U盘文件剪切丢失怎么办?揭秘原因并给出恢复方法

在日常生活和工作中&#xff0c;U盘已成为我们不可或缺的数据存储和传输工具。但有时候&#xff0c;我们在对U盘中的文件进行剪切操作时&#xff0c;会遇到文件丢失的情况。这种突如其来的数据消失往往会让人感到惊慌和困惑。那么&#xff0c;为什么U盘剪切时文件会丢失呢&…