python-elasticsearch基本用法
阿新 • • 發佈:2020-12-11
python-elasticsearch基本用法
一、安裝
pip install elasticsearch
pip install elasticsearch[async] #支援非同步的es庫
二、例項es物件,並建立index
from elasticsearch import Elasticsearch from elasticsearch import AsyncElasticsearch es = Elasticsearch(host="localhost", port=9200) #es = AsyncElasticsearch() body = { "settings": { "number_of_shards": 3, "number_of_replicas": 2 }, "mappings":{ # "_doc":{ "properties":{ "id":{ "type":"integer", "index":True }, "text": { "type": "text", "index":False }, "userId": { "type": "long", "index": True }, "reprinted": { "type": "keyword", "index": True }, } # } } } #建立 index es.indices.create(index = "test", body = body) #刪除 index es.indices.delete(index = 'test')
三、增刪改查
#插入資料 es.index(index = "test", doc_type = "_doc", id = 1, body = {"id":1, "name":"小明"}) #可以不用指定id,create會自動新增id。 es.create(index="test", doc_type = "_doc",id = 2, body = {"id":2, "name":"小紅"}) #刪除指定資料 es.delete(index='test', doc_type='_doc', id=1) #修改欄位 es.update(index = "test", doc_type = "_doc", id = 1, body = {"doc":{"name":"張三"}}) #查詢資料 es.get(index = "test", doc_type = "_doc", id = 1) es.search(index = "test", doc_type = "_doc", body = query) #滾動分頁的func,第四塊部分 分頁查詢中 說明 es.scroll(index = "test", scroll_id = "scroll_id", scroll = "5m") #批量插入&批量更新 """ { '_index':'test', '_type':'_doc', '_id':20, 'doc':{'name':'李四', 'id':20}, } 插入的每一個數據中,都需要指定 _index,_type,_id 更新、插入的資料放在doc中 """ from elasticsearch.helpers import async_bulk,bulk async def main(): await async_bulk(es, data) bulk(es, data)
四、es.search篩選資料的引數
es.search(index = "test", doc_type = "_doc", body = body, size = 10) """ index、doc_type、body size = 10 : 返回的資料量 filter_path = [ 'hits.hits._id','hits.hits._type']: 用於指定響應的內容 default_operator: 指定查詢的運算子 AND或者OR 預設值為:OR from_ = 0 : 返回資料的起始值,用於分頁 scroll = "5m" : 是否記錄滾動翻頁的索引值, 記錄5分鐘 """ #返回所有資料 body = {"query":{"match_all": {}}} #指定檢索欄位 body = {"query":{"match": {"name":"小明"}}} #排序 body = { "query":{...}, "sort":[ { "id(排序欄位)":{ "order" : "desc" #asc\desc 升序\降序 } } ] } #分頁,從第10個數據開始,返回10條資料。 == [10:20] es.search(size = 10, from_ = 10) #使用滾動分頁,速度快,查詢後會記錄最後一條資料,不適用跳頁查詢。 #響應返回 _scroll_id欄位、呼叫es.scroll方法返回下一頁。 es.search(scroll = "5m") es.scroll(scroll_id = "_scroll_id", scroll = "5m")