python elasticsearch从创建索引到写入数据的全过程


Posted in Python onAugust 04, 2019

python elasticsearch从创建索引到写入数据

创建索引

from elasticsearch import Elasticsearch
es = Elasticsearch('192.168.1.1:9200')
mappings = {
      "mappings": {
        "type_doc_test": {              #type_doc_test为doc_type
          "properties": {
            "id": {
              "type": "long",
              "index": "false"
            },
            "serial": {
              "type": "keyword", # keyword不会进行分词,text会分词
              "index": "false" # 不建索引
            },
            #tags可以存json格式,访问tags.content
            "tags": {
              "type": "object",
              "properties": {
                "content": {"type": "keyword", "index": True},
                "dominant_color_name": {"type": "keyword", "index": True},
                "skill": {"type": "keyword", "index": True},
              }
            },
            "hasTag": {
              "type": "long",
              "index": True
            },
            "status": {
              "type": "long",
              "index": True
            },
            "createTime": {
              "type": "date",
              "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
            },
            "updateTime": {
              "type": "date",
              "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
            }
          }
        }
      }
    }
res = es.indices.create(index = 'index_test',body =mappings)

通过以上代码即可创建es索引

写入一条数据

写入数据需要根据 创建的es索引类型对应的数据结构写入:

from elasticsearch import Elasticsearch
es = Elasticsearch('192.168.1.1:9200')
action ={
       "id": "1111122222",
       "serial":"版本",
       #以下tags.content是错误的写法
       #"tags.content" :"标签2",
       #"tags.dominant_color_name": "域名的颜色黄色",
       #正确的写法如下:
       "tags":{"content":"标签3","dominant_color_name": "域名的颜色黄色"},
       #按照字典的格式写入,如果用上面的那种写法,会直接写成一个tags.content字段。
       #而不是在tags中content添加数据,这点需要注意
       "tags.skill":"分类信息",
       "hasTag":"123",
       "status":"11",
       "createTime" :"2018-2-2",
       "updateTime":"2018-2-3",
        }
es.index(index="index_test",doc_type="doc_type_test",body = action)

即可写入一条数据

错误的写入

python elasticsearch从创建索引到写入数据的全过程

正确的写入

python elasticsearch从创建索引到写入数据的全过程

写入多条数据

from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
es = Elasticsearch('192.168.1.1:9200')
ACTIONS = []
action1 ={
          "_index": "indes_test",
          "_type": "doc_type_test",
          "_id":"bSlegGUBmJ2C8ZCSC1R1",
          "_source":{
            "id": "1111122222",
            "serial":"版本",
            "tags.content" :"标签2",
            "tags.dominant_color_name": "域名的颜色黄色",
            "tags.skill":"分类信息",
            "hasTag":"123",
            "status":"11",
            "createTime" :"2018-2-2",
            "updateTime":"2018-2-3",
          }
        }
action2 ={
          "_index": "indes_test",
          "_type": "doc_type_test",
          "_id":"bSlegGUBmJ2C8ZCSC1R2",
          "_source":{
            "id": "1111122222",
            "serial":"版本",
            "tags.content" :"标签2",
            "tags.dominant_color_name": "域名的颜色黄色",
            "tags.skill":"分类信息",
            "hasTag":"123",
            "status":"11",
            "createTime" :"2018-2-2",
            "updateTime":"2018-2-3",
          }
        }
ACTIONS.append(action1)
ACTIONS.append(action2)
res,_ =bulk(es, ACTIONS, index="indes_test", raise_on_error=True)
print(res)

这个方式是手动指定了id,如果把”_id”这个参数去掉即可自动生成id数据.
如下:

action2 ={
          "_index": "indes_test",
          "_type": "doc_type_test",
          "_source":{
            "id": "1111122222",
            "serial":"版本",
            "tags.content" :"标签2",
            "tags.dominant_color_name": "域名的颜色黄色",
            "tags.skill":"分类信息",
            "hasTag":"123",
            "status":"11",
            "createTime" :"2018-2-2",
            "updateTime":"2018-2-3",
          }
        }

删除一条数据

from elasticsearch import Elasticsearch
es = Elasticsearch('192.168.1.1:9200')
res = es.delete(index="index_test",doc_type="doc_type_test", id ="bSlegGUBmJ2C8ZCSC1R1")
print(res)

直接替换id的即可删除所需的id

查询一条数据

from elasticsearch import Elasticsearch
es = Elasticsearch('192.168.1.1:9200')
res = es.get(index="index_test",doc_type="doc_type_test", id ="bSlegGUBmJ2C8ZCSC1R2")
print(res)

直接替换id的即可查询所需的id

查询所有数据

from elasticsearch import Elasticsearch

es = Elasticsearch('192.168.1.1:9200')

res = es.search(index="index_test",doc_type="doc_type_test")
print(res)
print(res['hits']['hits'])

通过['hits']参数,可以解析出查询数据的详细内容

根据关键词查找

from elasticsearch import Elasticsearch
es = Elasticsearch('192.168.1.1:9200')
doc = {
      "query": {
        "match": {
          "_id": "aSlZgGUBmJ2C8ZCSPVRO"
        }
      }
    }
res = es.search(index="index_test",doc_type="doc_type_test",body=doc)
print(res)

总结

所述是小编给大家介绍的python elasticsearch从创建索引到写入数据的全过程,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
python网络编程学习笔记(三):socket网络服务器
Jun 09 Python
Python实现基于HTTP文件传输实例
Nov 08 Python
python类继承与子类实例初始化用法分析
Apr 17 Python
Python中list列表的一些进阶使用方法介绍
Aug 15 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
Python找出最小的K个数实例代码
Jan 04 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
Python文本处理之按行处理大文件的方法
Apr 09 Python
python读取文件名并改名字的实例
Jan 07 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
学习Python爬虫的几点建议
Aug 05 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 04 Python
elasticsearch python 查询的两种方法
Aug 04 #Python
python Elasticsearch索引建立和数据的上传详解
Aug 04 #Python
Django 创建新App及其常用命令的实现方法
Aug 04 #Python
python模拟鼠标点击和键盘输入的操作
Aug 04 #Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 #Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
Aug 04 #Python
使用 python pyautogui实现鼠标键盘控制功能
Aug 04 #Python
You might like
PHP校验ISBN码的函数代码
2011/01/17 PHP
PHP中extract()函数的定义和用法
2012/08/17 PHP
简单实现PHP留言板功能
2016/12/21 PHP
JavaScript 编程引入命名空间的方法
2007/06/29 Javascript
找到了一篇jQuery与Prototype并存的冲突的解决方法
2007/08/29 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
jquery.qrcode在线生成二维码使用示例
2013/08/21 Javascript
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
layui 实现二级弹窗弹出之后 关闭一级弹窗的方法
2019/09/18 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
jQuery实现本地存储
2020/12/22 jQuery
python数据结构树和二叉树简介
2014/04/29 Python
python with statement 进行文件操作指南
2014/08/22 Python
Python用模块pytz来转换时区
2016/08/19 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
详解小白之KMP算法及python实现
2019/04/04 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
预防煤气中毒方案
2014/06/16 职场文书
委托书格式
2014/08/01 职场文书
敲诈同学钱财检讨书范文
2014/11/18 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书