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使用range函数计算一组数和的方法
May 07 Python
python3中set(集合)的语法总结分享
Mar 24 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
python调用百度语音识别api
Aug 30 Python
python实现决策树分类(2)
Aug 30 Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 Python
Python面向对象进阶学习
May 21 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Python中包的用法及安装
Feb 11 Python
python3 deque 双向队列创建与使用方法分析
Mar 24 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 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 引用(&)详解
2009/11/20 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
Js 中debug方式
2010/02/07 Javascript
JS 显示当前日期与时间的代码
2010/03/24 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
用js实现before和after伪类的样式修改的示例代码
2017/09/07 Javascript
webpack打包node.js后端项目的方法
2018/03/10 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
Python 查看文件的编码格式方法
2017/12/21 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
python实现大学人员管理系统
2019/10/25 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
Python类绑定方法及非绑定方法实例解析
2020/10/09 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
暑期培训班招生方案
2014/08/26 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
导游词之襄阳古城
2019/09/27 职场文书
Python sklearn分类决策树方法详解
2022/09/23 Python