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.pswp.cn/web/10201.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10201.shtml
英文地址,請注明出處:http://en.pswp.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盤剪切時文件會丟失呢&…