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使用fork实现守护进程的方法
Nov 16 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
Feb 13 Python
Python随机函数random()使用方法小结
Apr 29 Python
python使用turtle库绘制时钟
Mar 25 Python
python实现傅里叶级数展开的实现
Jul 21 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
python return逻辑判断表达式实现解析
Dec 02 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Django使用Profile扩展User模块方式
May 14 Python
Python如何输出百分比
Jul 31 Python
Python Numpy库的超详细教程
Apr 06 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
[01:23:35]Ti4主赛事胜者组 DK vs EG 1
2014/07/19 DOTA
python实现批量改文件名称的方法
2015/05/25 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
python文件操作之批量修改文件后缀名的方法
2018/08/10 Python
python 自动批量打开网页的示例
2019/02/21 Python
详解python中*号的用法
2019/10/21 Python
Python之Class&Object用法详解
2019/12/25 Python
关于Python字符串显示u...的解决方式
2020/03/06 Python
pycharm导入源码的具体步骤
2020/08/04 Python
Python如何绘制日历图和热力图
2020/08/07 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
新驾驶员个人自我评价
2014/01/03 职场文书
小学后勤管理制度
2014/01/14 职场文书
干部现实表现材料
2014/02/13 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
初三新学期计划书
2014/05/03 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书