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 正则表达式 概述及常用字符
May 04 Python
Python模块包中__init__.py文件功能分析
Jun 14 Python
python中kmeans聚类实现代码
Feb 23 Python
浅析Python数据处理
May 02 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 Python
Python下opencv图像阈值处理的使用笔记
Aug 04 Python
python随机生成库faker库api实例详解
Nov 28 Python
django 模版关闭转义方式
May 14 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 Python
Python中如何处理常见报错
Jan 18 Python
Python创建SQL数据库流程逐步讲解
Sep 23 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自定义urlencode,urldecode函数实例
2015/03/24 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
用js实现的检测浏览器和系统的函数
2009/04/09 Javascript
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
JavaScript驾驭网页-DOM
2016/03/24 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
移动端界面的适配
2017/01/11 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
基于vue-cli npm run build之后vendor.js文件过大的解决方法
2018/09/27 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
python学习教程之使用py2exe打包
2017/09/24 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
报关员个人职业生涯规划书
2014/03/12 职场文书
班风口号
2014/06/18 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
2015年大学宣传部工作总结
2015/05/26 职场文书
律师函格式范本
2015/05/27 职场文书
投诉书范文
2015/07/02 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
Jupyter notebook 不自动弹出网页的解决方案
2021/05/21 Python
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL