python+elasticsearch實(shí)現(xiàn)標(biāo)簽匹配計(jì)數(shù)操作
給定一組標(biāo)簽 [{“tag_id”: “1”, “value”: “西瓜”}, {“tag_id”: “1”, “value”: “蘋(píng)果”}],我想精準(zhǔn)匹配到現(xiàn)有的標(biāo)簽庫(kù)中存在的標(biāo)簽并記錄匹配成功的數(shù)量。
| 標(biāo)簽id(tag_id) | 標(biāo)簽名(tag_name) | 標(biāo)簽值(tag_name ) |
|---|---|---|
| 1 | 水果 | 西瓜 |
| 1 | 水果 | 蘋(píng)果 |
| 1 | 水果 | 橙子 |
| 2 | 動(dòng)物 | 老虎 |
這個(gè)步驟需要sql中的and操作,即:
es中的must條件
{
"query": {
"bool": {
"must": [
{
"term": {
"條件1": "ok"
}
},
{
"term": {
"條件2": 123
}
}
]
}
}
}要同時(shí)滿足條件1,條件2這個(gè)查詢才會(huì)有結(jié)果。里面的term表示精準(zhǔn)查詢。
這個(gè)步驟需要sql中的or操作,即:
es中的should條件
{
"query": {
"bool": {
"should": [
{
"match": {
"條件1": "ok"
}
},
{
"match": {
"條件2": "666"
}
}
]
}
}
}滿足條件1,條件2任意一個(gè)查詢都會(huì)有結(jié)果。里面的match表示模糊查詢。
查詢
我需要查詢給定這組標(biāo)簽 [{“tag_id”: “1”, “value”: “西瓜”}, {“tag_id”: “1”, “value”: “蘋(píng)果”}],在現(xiàn)有的標(biāo)簽庫(kù)出現(xiàn)的次數(shù),這既需要tag_id和value的and關(guān)系,又需要外層的or關(guān)系,查詢的語(yǔ)句如下
# 執(zhí)行查詢
query_terms = [{"tag_id": "1", "value": "西瓜"}, {"tag_id": "1", "value": "蘋(píng)果"}]
query = {
"query": {
"bool": {
"should": [
{"bool": {
"must": [
{
"term": {
"value": term['value']
}
},
{
"term": {
"tag_id": term['tag_id']
}
}
]
}} for term in query_terms
]
}
}
}查庫(kù)結(jié)果
# 執(zhí)行查詢并輸出結(jié)果
search_result = es.search(index=index_name, body=query)
num_matches = search_result["hits"]["total"]["value"]
print(num_matches)
if search_result["hits"]["total"]["value"] == 0:
print("沒(méi)有匹配的結(jié)果。查詢條件:", query_terms)
else:
print("查詢結(jié)果:")
for hit in search_result["hits"]["hits"]:
print("ID:", hit["_id"], "Score:", hit["_score"], "Data:", hit["_source"])到此這篇關(guān)于python+elasticsearch實(shí)現(xiàn)標(biāo)簽匹配計(jì)數(shù)操作的文章就介紹到這了,更多相關(guān)python elasticsearch計(jì)數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
selenium+python自動(dòng)化測(cè)試之使用webdriver操作瀏覽器的方法
這篇文章主要介紹了selenium+python自動(dòng)化測(cè)試之使用webdriver操作瀏覽器的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01
python抓取網(wǎng)頁(yè)內(nèi)容并進(jìn)行語(yǔ)音播報(bào)的方法
今天小編就為大家分享一篇python抓取網(wǎng)頁(yè)內(nèi)容并進(jìn)行語(yǔ)音播報(bào)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
淺談numpy中np.array()與np.asarray的區(qū)別以及.tolist
這篇文章主要介紹了淺談numpy中np.array()與np.asarray的區(qū)別以及.tolist,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python實(shí)現(xiàn)一個(gè)發(fā)送程序和接收程序
這篇文章主要介紹了Python實(shí)現(xiàn)一個(gè)發(fā)送程序和接收程序,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
python引入requests報(bào)錯(cuò)could?not?be?resolved解決方案
這篇文章主要為大家介紹了python引入requests報(bào)錯(cuò)could?not?be?resolved解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
基于Python生成橫向年度日歷的代碼實(shí)現(xiàn)
文章介紹了使用Python的calendar模塊和openpyxl庫(kù)生成Excel日歷的方法,并描述了如何實(shí)現(xiàn)動(dòng)態(tài)列寬、嚴(yán)格對(duì)齊和樣式統(tǒng)一,以生成美觀專業(yè)的日歷,需要的朋友可以參考下2026-01-01
python實(shí)現(xiàn)可將字符轉(zhuǎn)換成大寫(xiě)的tcp服務(wù)器實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)可將字符轉(zhuǎn)換成大寫(xiě)的tcp服務(wù)器,通過(guò)tcp服務(wù)器端實(shí)現(xiàn)針對(duì)字符的轉(zhuǎn)換與返回功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04
python語(yǔ)法學(xué)習(xí)之super(),繼承與派生
這篇文章主要介紹了python語(yǔ)法學(xué)習(xí)之super(),繼承與派生,繼承是一種創(chuàng)建新類的方式,具體的super()派生的相關(guān)詳細(xì)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容2022-05-05
用pandas中的DataFrame時(shí)選取行或列的方法
今天小編就為大家分享一篇用pandas中的DataFrame時(shí)選取行或列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
Python連接SQL Server數(shù)據(jù)庫(kù)并實(shí)時(shí)讀取數(shù)據(jù)
在Python中,可以使用pyodbc庫(kù)來(lái)連接SQL Server數(shù)據(jù)庫(kù),并使用pandas庫(kù)來(lái)進(jìn)行數(shù)據(jù)處理,下面我們就來(lái)講講如何實(shí)時(shí)讀取SQL Server數(shù)據(jù)庫(kù)表,并將數(shù)據(jù)寫(xiě)入Excel文件,需要的可以參考下2023-12-12

