调用Python中的elasticsearch库对ES进行操作。
1.安装
pip install elasticsearch
from elasticsearch import Elasticsearch, helpers
3.连接
es = Elasticsearch(hosts=es_host,port=port,timeout=100)
es.ping() #验证是否连接成功
4.操作
#创建索引,若存在即忽略
#指定建立的类型,所用分词器,是否建立索引等,即预先定义好字段
body = {
'mappings': {
'properties': {
'uuid':{
'type':'keyword',
'index':'true'
},
'url':{
'type':'text',
'index':'false'
},
'title': {
'type': 'text',
'index':'true',
'analyzer': 'ik_max_word',
'search_analyzer':'ik_max_word'
},
'text':{
'type': 'text',
'index':'true',
'analyzer': 'ik_max_word',
'search_analyzer':'ik_max_word'
}
}
}
}
es.indices.create(index='test',ignore=400,body=body)
#插入数据
actions={
'uuid':data_id,
'url':data_url,
'title':data_title,
'text':data_text
}
es.index(index="test",body = actions)
#按照索引搜索,指定返回数目,返回为字典。body的写法需要注意,形式较多。
body_query = {
"query":{
"match":{
"text":"运动"
}
}
}
nnn=es.search(index="test",size='200')
# 按条件查询数目
query_str={'query':{'match':{'cgdsId': cgds_code}}}
total_num_data= es.count(index=index, body=query_str)['count']
#更新
es.update(index='file',id=file_id,body=info_body,doc_type="search")
#设置、获取数据结构类型
mapping = {
'properties': {
"date": {
"type": "date",
"format": "yyyy-MM-dd"
}
}
}
es.indices.put_mapping(index='test_2',body=mapping)
es.indices.get_mapping(index='test')