一、python連接es
package: pip install elasticsearch
es = Elasticsearch( ['address'], http_auth=('user_name', 'password'), port=9200, use_ssl=False )
無密碼,自己搭建的
es = Elasticsearch(
["host:9200/"], # 連接集群,以列表的形式存放各節點的IP地址
)
二、基本操作之創建索引,集合
mappings = { "mappings": { "example_name_test": { "properties": { "email_id": { "type": "text", "index": "true" }, "company_name": { "type": "keyword", # keyword不會進行分詞,text會分詞,integer整數,float浮點數 "index": "true" # 不建索引 }, "company_id": { "type": "keyword", # keyword不會進行分詞,text會分詞 "index": "true" # 不建索引 }, "result": { "type": "object", "properties": { "client": {"type": "text", "index": "true"}, } }, "create_time": { "type": "keyword", "index": 'true' } } } } } res = self.es.indices.create(index='example_name_test', body=mappings)
print(res)
# example_name_test 為名字
內容長度如果較多使用text,較少使用keyword,一般使用keyword的比較多,因為text查詢極其占用內存
如果添加時間字段建議使用時間戳,類型用keyword
二 插入數據
res = es.index(index=name, doc_type=name, body=body) print(res)
三、查詢
#普通查詢 dsl = {'query': {'match': {'_id': 'AjDxVXABXWez-Pv8B-Ib'}}, } # 查詢全部 dsl = {'query': {'match_all': {}}} # 多條件查詢 dsl = { "query": { "bool": { "must": [ { "term": { "字段1": '1000001214' } }, { "term": { "字段2": content } }, ] } }, } # 查詢翻頁 dsl = { "query": { "match": {"code" : code} }, "from":0, # 從第幾個開始 "size":100 # 返回條數 } # 去重查詢 dsl = { "query": { "bool": { "must": [ { "term": { "email_id": email.m_mem_id } }, { "term": { "country": email.country } } ] } }, "collapse": { "field": "去重字段" } } # 字段排序 dsl = { "query": { "bool": { "must": [ { "term": { "email_id": email.m_mem_id } }, { "term": { "country": email.country } } ] } }, 'sort':[ {'排序字段':{ 'order':'desc' }} ] } # 執行語句 res = es.search(index='創建索引時起的名字', body=dsl) # 第二種方式 size建議在10000以內,大於10000報錯 res = es.search(index='創建索引時起的名字', body=dsl, scroll='5m',size=5000)
四、刪除
# 刪除無非就是根據查詢條件刪除 dsl=查詢條件參數 es.delete_by_query(index='名字', body=dsl)
# 刪除索引
# res = es.indices.delete('hot_keyword') # 刪除索引
res = es.delete(index=body_name, doc_type=body_name, id=d_id['_id']) # 根據_id刪除
五、更新
updateBody = { 'doc': { "字段名": 更新的內容 } } res = self.es.update(index='索引名字', doc_type='索引名字', id='集合里面的_id', body=updateBody)
更為詳細的參考教程后續補充
