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中wx将图标显示在右下角的脚本代码
Mar 08 Python
python实现读取命令行参数的方法
May 22 Python
Python文件处理
Feb 29 Python
Python实现的矩阵类实例
Aug 22 Python
解决nohup重定向python输出到文件不成功的问题
May 11 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
django之对FileField字段的upload_to的设定方法
Jul 28 Python
Python发送邮件的实例代码讲解
Oct 16 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
python自动点赞功能的实现思路
Feb 26 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
咖啡的种类和口感
2021/03/03 新手入门
一个分页的论坛
2006/10/09 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
jQuery回车实现登录简单实现
2013/08/20 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
JavaScript基于面向对象实现的猜拳游戏
2018/01/03 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
JS实现的简单折叠展开动画效果示例
2018/04/28 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
uniapp实现可滑动选项卡
2020/10/21 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
web.py获取上传文件名的正确方法
2014/08/26 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
Python基于pillow判断图片完整性的方法
2016/09/18 Python
python实现简易通讯录修改版
2018/03/13 Python
python编写简易聊天室实现局域网内聊天功能
2018/07/28 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
python递归法解决棋盘分割问题
2019/07/17 Python
Python单元测试与测试用例简析
2019/11/09 Python
tensorflow 限制显存大小的实现
2020/02/03 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
库房管理员岗位职责
2014/03/09 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
民间借贷借条如何写
2015/05/26 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
如何用python插入独创性声明
2021/03/31 Python
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
浅谈如何保证Mysql主从一致
2022/03/13 MySQL