1. 程式人生 > >elasticsearch API使用方法備忘(Python)

elasticsearch API使用方法備忘(Python)

elasticsearch api pytho


安裝模塊

pip install elasticsearch

創建連接

from elasticsearch import Elasticsearch

es = Elasticsearch(['192.168.1.1:9200'])

多節點

es = Elasticsearch(['192.168.1.1:9200',’192.168.1.2:9200’])

支持SSL的連接

es = Elasticsearch(

['localhost:443', 'other_host:443'],

# turn on SSL

use_ssl=True,

# make sure we verify SSL certificates (off by default)

verify_certs=True,

# provide a path to CA certs on disk

ca_certs='/path/to/CA_certs'

)

創建索引

es.indices.create(index='test_index', ignore=400)

es.indices.delete(index='test_index', ignore=[400, 404])

ignore可以忽略異常,其值是需要忽略的異常對應的返回碼,常見的有400表示索引已存在,404表示索引沒找到。

使用自定義映射創建索引:

mapping = {

"mappings": {

"test_type": {

"properties": {

"name": {

"type": "string",

"index": "not_analyzed"

},

"phone": {

"type": "string",

"index": "not_analyzed"

}

}

}

}

}

es.indices.create(index='test_index',ignore=400,body=mapping)

查看索引的映射:

es.indices.get_mapping("test_index")

寫入數據

插入一條:

es.index(index='test_index’,doc_type='test_type',body={“key”:”value”})

批量寫入:

doc = [

{"index": {}},

{'name': 'Jack', 'phone': '123456'},

{"index": {}},

{'name': 'Joe', 'phone': '321456' },

{"index": {}},

{'name': 'Nicole', 'phone': '654321'},

{"index": {}},

{'name': 'Lucy', 'phone': '456123'},

]

es.bulk(index='test_index',doc_type='test_type',body=doc)

刪除數據

根據id刪除一條數據

es.delete(index="test_index",doc_type="test_type",id="ZTg5IGMBxTpLs9ylvHBz")

根據查詢條件刪除數據:

body = {

"query":{

"match":{

"name": "Joe"

}

}

}

es.delete_by_query(index='test_index',doc_type='test_type',body=body)

查詢

查詢所有數據

body = {

"query":{

"match_all":{}

}

}

es.search(index="test_index",doc_type="test_type",body=body)

或者

es.search(index="test_index",doc_type="test_type")

完全匹配term:

#搜索name字段為Nicole的數據

body = {

"query":{

"term":{

"name": "Nicole"

}

}

}

es.search(index="test_index",doc_type="test_type",body=body)

關鍵字匹配match:

#搜索name字段包含Nicole關鍵字的數據

body = {

"query":{

"match":{

"name": "Nicole"

}

}

}

es.search(index="test_index",doc_type="test_type",body=body)

bool聯合查詢,bool3類查詢關系,must(都滿足),should(其中一個滿足),must_not(都不滿足)

#搜索name為Nicole並且phone為123456的數據

body = {

"query":{

"bool":{

"must":[

{

"term":{

"name": "Nicole"

}

},

{

"term":{

"phone": “123456”

}

}

]

}

}

}

es.search(index="test_index",doc_type="test_type",body=body)


elasticsearch API使用方法備忘(Python)