Python操作elasticsearch 进行创建索引,导入数据

需求:Elasticsearch索引,如果存在,删除索引下的数据,若不存在,则新建索引

代码:

from elasticsearch import Elasticsearch
import elasticsearch.helpers
es = Elasticsearch('127.0.0.1:7676') 
mappings = {
    "mappings": {
        "dl_view_type": {
            "properties": {
                "dl_view_data": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256   # 最大可被term索引到的最大值
                        }
                    }
                },
                "dl_view_res": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                }
            }
        }
    }
}
list = []   #  存放目前es数据库里所有的索引
indices = es.indices.get_alias()
print(indices)
for k, v in indices.items():
    list.append(k)
if 'dl_view' in list: 
    es.delete_by_query(index='dl_view',body={'query':{'match_all':{}}})  # 若存在,则删除索引下全部数据
else:
    es.indices.create(index='dl_view', body=mappings)  # 不存在,新建索引
es_data = []   # 需要存放的数据
for each in view_data:   
    each_data = dict()
    dic = {}
    dic["basic_str"] = {"age": each["age_years"]}
    dic["basic_str"] = {"gender": each["gender_name"]}
    dic["basic_str"] = {"height": each["height"][0]}
    dic["basic_str"] = {"weight": each["weight"][0]}
    # each_data['name'] = name
    each_data['data'] = each
    each_data['res'] = dic
    es_data.append(each_data)
actions = [
    {
        '_op_type': 'index',
        '_index': "dl_view",  # index
        '_type': "dl_view_type",  # type
        '_source': one
    }
    for one in es_data
] # 将数据和索引绑定
elasticsearch.helpers.bulk(es, actions, index="dl_view", raise_on_error=True)  # 往es里导入数据

此时,如果不报错,那就是导入成功了,如果报错,一般都是mapping和你要导入的数据不匹配导致的,例如下面的错误信息:

 

按照提示信息,对你的mappings进行修改即可。

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值