ES入門教程 (python 版)

ES入門教程

1. 創建ES對象


from elasticsearch import Elasticsearch
# 實例化一個ip為localhost,端口為9200,允許超時一小時的es對象
es = Elasticsearch(hosts="localhost",port=9200,timeout=3600)
# 1. 創建 索引
index_name = "test"
es.indices.create(index=index_name)# 2. 刪除 索引
es.indices.delete(index='123')# 3. 插入數據
doc = {"name": "方天", "age": "23"}
es.index(index=index_name, id=2, document=doc)# 4. 刪除數據
## 4.1 es.delete  刪除指定 id 數據
es.delete(index='test',id='2')# 5. 更新數據
##  5.1 es.update():更新指定字段
doc = {'name': '李邱俊','age': '20'}
es.update(index='test',id='2',doc=doc)

2. 數據查詢(最重要)

1. es.search():按照指定規則查詢
res = es.search(index='test', query={'match_all': {}})
print(res)

參數說明:

參數說明
index要查詢的索引名稱
size查詢多少條數據(默認10)
from_從第幾條開始查詢(用于分頁)
filter_path過濾返回字段,只顯示指定內容
query查詢規則
sort排序方式

2. 常見查詢方式

? 2.1 查詢所有數據:match_all

res = es.search(index='test', query={'match_all': {}})

? 2.2 模糊查詢(分詞):match

res = es.search(index='test', query={'match': {'name': '方'}})

? 2.3 短語匹配(不分詞):match_phrase

res = es.search(index='test', query={'match_phrase': {'name': '方天'}})

? 2.4 精確查詢單值:term

res = es.search(index='test', query={'term': {'name.keyword': '方天'}})

注意:如果字段是 text 類型,需要用 .keyword 進行精確匹配。


? 2.5 精確查詢多值:terms

res = es.search(index='test', query={'terms': {'name.keyword': ['方天', '李邱俊']}})

? 2.6 多字段查詢:multi_match

res = es.search(index='test',query={'multi_match': {'query': '方天','fields': ['name', 'age']}}
)

? 2.7 前綴查詢:prefix

res = es.search(index='test', query={'prefix': {'name.keyword': '方'}})

? 2.8 通配符查詢:wildcard

res = es.search(index='test', query={'wildcard': {'name.keyword': '方?天'}})
? 表示一個字符,* 表示0個或多個字符

? 2.9 正則查詢:regexp

res = es.search(index='test', query={'regexp': {'name.keyword': '方.*'}})

? 2.10 多條件查詢:bool

must:與(AND)

res = es.search(index='test', query={'bool': {'must': [{'match': {'name': '方天'}},{'term': {'age': '23'}}]}
})

should:或(OR)

res = es.search(index='test', query={'bool': {'should': [{'match': {'name': '方天'}},{'match': {'name': '李邱俊'}}]}
})

must_not:非(NOT)

res = es.search(index='test', query={'bool': {'must_not': [{'term': {'name.keyword': '方天'}}]}
})

? 2.11 存在字段查詢:exists

res = es.search(index='test', query={'exists': {'field': 'age'}})

? 2.12 范圍查詢:range

res = es.search(index='test', query={'range': {'age': {'gte': 20,'lte': 30 }}
})

? 2.13 嵌套查詢:nested

假設數據結構為:

{"name": "方天","info": {"hobby": "籃球","city": "北京"}
}

查詢嵌套字段:

res = es.search(index='test', query={'nested': {'path': 'info','query': {'match': {'info.hobby': '籃球'}}}
})

3. 排序:sort

升序(asc)

res = es.search(index='test', sort={'age': {'order': 'asc'}})

降序(desc)

res = es.search(index='test', sort={'age': {'order': 'desc'}})

4. 分頁查詢:sizefrom_
res = es.search(index='test', size=5, from_=0)

5. 過濾返回字段:filter_path
res = es.search(index='test',filter_path=['hits.hits._source.name']
)

6. 完整示例
# 查詢 name 包含“方”且 age 在 20 到 30 之間,按 age 升序排列,只返回前 5 條
res = es.search(index='test',query={'bool': {'must': [{'match': {'name': '方'}}],'filter': [{'range': {'age': {'gte': 20, 'lte': 30}}}]}},sort={'age': {'order': 'asc'}},size=5
)# 打印結果
for hit in res['hits']['hits']:print(hit['_source'])

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96256.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96256.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96256.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Gateway中Forward配置+源碼觀賞

系列文章目錄 文章目錄系列文章目錄一、ForwardPathFilter二、RouteToRequestUrlFilter三、ForwardRoutingFilteryaml forward配置gateway:routes:- id: user-route # uri: lb://useruri: forward:///user/indexpredicates:- Path/user/**- YoGET # filt…

BAS16XV2T1G ON安森美半導體 高速開關二極管 電子元器件IC

BAS16XV2T1G ON Semiconductor 高速開關二極管專業解析1. 產品技術檔案BAS16XV2T1G是安森美半導體(ON Semiconductor)推出的高速開關二極管,采用SOT-523超微型封裝(1.60.80.95mm),專為現代高密度電子設備設計,以其超快…

親測可用 [安卓]《神秘來電》V1.1無需登入無廣告離線打開即用手機模擬發起虛假來電免費版

神秘來電是一款可以模擬虛擬電話的應用程序,它能夠在用戶需要的時候模擬各種來電,以便用戶能夠在尷尬的場合脫身。用戶可以預設多個不同的來電號碼和鈴聲,并可隨時觸發這些虛擬電話,在特殊情況下幫助用戶擺脫尷尬。它為那些社交恐…

8.20 dp

lc73矩陣置零queue隊列標記// 整行置零for(int y0; y<n; y) matrix[i][y] 0; // 整列置零for(int x0; x<m; x) matrix[x][j] 0; class Solution { public:void setZeroes(vector<vector<int>>& matrix) {int m matrix.size(), n matrix[0].size();//…

STL庫——string(類模擬實現)

? ? ? ? ? づ?ど &#x1f389; 歡迎點贊支持&#x1f389; 個人主頁&#xff1a;勵志不掉頭發的內向程序員&#xff1b; 專欄主頁&#xff1a;C語言&#xff1b; 文章目錄 前言 一、基本框架 二、構造函數 三、析構函數 四、拷貝構造 五、運算符重載 5.1、賦值重載 5.2…

Linux I/O 多路復用實戰:深入剖析 Select 與 Poll

## 引言:從“阻塞”的餐廳到“事件驅動”的盛宴 想象一下,你是一家小餐館的服務員。餐廳只有5張桌子。你的工作流程是這樣的:走到1號桌,問他們是否要點菜,然后站在那里等他們決定;等他們點完,再去2號桌,同樣站在那里等... 如果1號桌的客人看菜單看了半個小時,那么其他…

【clion】cmake腳本1:調試腳本并構建Fargo項目win32版本

調試腳本并構建 【clion】visual studio的sln轉cmakelist并使用clion構建32位 報錯 "D:\Program Files\JetBrains\CLion 2022.3.1\bin\cmake\win\x64\bin\cmake.exe" --debugger --debugger-pipe=\\<

VS2005里的快捷鍵

VS2005是微軟在2005發布的一款支持C、C#、.net開發語言的集成開發工具&#xff0c;它支持的C版本為C03&#xff0c;但不支持C11&#xff0c;到VS2013才支持大部分的C11(簡稱C11)&#xff0c;到VS2015 update3才完全支持C11。既然VS2005不支持C11&#xff0c;而智能指針是C11才引…

前后端聯合實現文件下載,實現 SQL Server image 類型文件下載

1、前端 Vue3QualityFile.vue<script setup lang"ts" name"QualityFile"> ...... // 下載&#xff0c;實現 SQL Server image 類型文件下載 const onDownloadClick async (fileNo: string) > {// const result await qualityFileDownloadFileWi…

【OneAI】使用Rust構建的輕量AI網關

LLM網關 統一大模型API入口&#xff0c;使用一個令牌調用多家模型&#xff0c;無需切換API Key兼容OpenAI輸入輸出規范內置10提供商和50模型&#xff0c;開箱即用支持自動負載、限流、IP限制、Token用量限制等功能支持釘釘、飛書、企微消息預警支持對不同提供商設置代理支持主…

Jenkins服務器配置SSH

1. 創建Jenkins用戶的SSH配置ssh-keygen -t rsa -b 4096 -f /tmp/jenkins_ssh_key -N ""2. 在Jenkins服務器上執行以下命令# 切換到root用戶 sudo su -# 創建Jenkins用戶的SSH目錄 mkdir -p /var/lib/jenkins/.ssh chown jenkins:jenkins /var/lib/jenkins/.ssh chmo…

nginx-下載功能-狀態統計-訪問控制

nginx-下載功能-狀態統計-訪問控制一、利用nginx做網站提供下載功能1. 進入nginx存放配置文件目錄2. 編輯nginx.conf文件&#xff0c;開啟下載功能3. 檢查nginx.conf主配置文件是否正確4. 重啟nginx服務5. 修改首頁文件index.html6. 訪問首頁7. 去網頁根目錄下新建download目錄…

GitLab CI/CD、Jenkins與GitHub Actions在Kubernetes環境中的方案對比分析

GitLab CI/CD、Jenkins與GitHub Actions在Kubernetes環境中的方案對比分析 隨著容器化和微服務的普及&#xff0c;基于Kubernetes的部署已經成為主流。在實際的生產環境中&#xff0c;如何選擇合適的CI/CD流水線方案以實現自動化構建、測試、部署和發布&#xff0c;直接關系到團…

tcp會無限次重傳嗎

tcp作為面向連接的&#xff0c;可靠的&#xff0c;字節流。最重要的特點就是可靠&#xff0c;其中重傳又是保證可靠的重要前提。那么當tcp發送數據之后&#xff0c;收不到ack的情況下&#xff0c;會無限次重傳嗎。不會。# cat /proc/sys/net/ipv4/tcp_retries1 3 # cat /proc/s…

EasyAIoT平臺部署

EasyAIoT官方文檔專注于 AIoT 智能硬件與工業軟件解決方案&#xff0c;提供從設備接入到云端管理的全棧服務http://pro.basiclab.top:9988/

功能測試相關問題

1.功能測試流程&#xff08;工作流程&#xff09;需求分析 -- 測試點分析&#xff08;xmind&#xff09;-- 編寫測試計劃/用例及評審 -- 執行測試用例&#xff08;開發提交測試&#xff09;-- 發現缺陷通過缺陷管理工具提交 -- 回歸測試及bug驗證&#xff08;開發提測新版本&am…

微服務網關中數據權限傳遞的那些坑:從 Feign 兼容性問題到解決方案

在微服務架構中&#xff0c;網關作為流量入口&#xff0c;常常需要承擔身份認證、權限校驗等職責。其中&#xff0c;用戶數據權限的傳遞看似簡單&#xff0c;卻隱藏著不少兼容性陷阱。本文將結合實際項目經驗&#xff0c;聊聊如何解決 Feign 調用時請求頭中 JSON 數據的傳遞問題…

基于SpringBoot的旅游攻略系統網站【2026最新】

作者&#xff1a;計算機學姐 開發技術&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源碼”。 專欄推薦&#xff1a;前后端分離項目源碼、SpringBoot項目源碼、Vue項目源碼、SSM項目源碼、微信小程序源碼 精品專欄&#xff1a;…

thingsboard 服務器在2核CPU、2G內存資源配置下如何調優提速,適合開發/演示

物聯網設備管理平臺致力于為客戶提供高效、可靠的物聯網解決方案。基于開源物聯網平臺進行深度二次開發&#xff0c;我們打造了功能強大、靈活易用的物聯網平臺&#xff0c;廣泛應用于智能家居、智能工廠、智能城市等多個領域 一、標準資源要求 CPU&#xff1a;建議至少 8 vCP…

C#多線程學習—主子線程,Invoke與begininvoke

一、為什么需要多線程操作&#xff1f;在 WinForms 應用程序中&#xff0c;主線程&#xff08;UI 線程&#xff09;負責處理用戶交互和界面更新。當執行耗時操作&#xff08;如網絡請求、文件讀寫、復雜計算&#xff09;時&#xff0c;如果直接在 UI 線程執行&#xff0c;會導致…