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中subprocess模块用法实例详解
May 20 Python
Python搜索引擎实现原理和方法
Nov 27 Python
python pandas修改列属性的方法详解
Jun 09 Python
详解python中Numpy的属性与创建矩阵
Sep 10 Python
Python英文文本分词(无空格)模块wordninja的使用实例
Feb 20 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
Python3中的最大整数和最大浮点数实例
Jul 09 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
python add_argument()用法解析
Jan 29 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
Feb 28 Python
Python selenium爬取微博数据代码实例
May 22 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
学习javascript,实现插入排序实现代码
2011/07/31 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
jQuery提示效果代码分享
2014/11/20 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
PHP实现本地图片上传和验证功能
2017/02/27 Javascript
bootstrap table插件的分页与checkbox使用详解
2017/07/23 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
p5.js临摹动态图形实现方法详解
2019/10/23 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
Python中map,reduce,filter和sorted函数的使用方法
2015/08/17 Python
python去掉空白行的多种实现代码
2018/03/19 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
KIKO美国官网:意大利的平价彩妆品牌
2017/05/16 全球购物
德国团购网站:Groupon德国
2018/03/13 全球购物
大学生优秀团员事迹材料
2014/01/30 职场文书
2015公务员试用期工作总结
2014/12/12 职场文书
升级 Win11 还是坚守 Win10?微软 Win11 新系统缺失功能大盘点
2022/04/05 数码科技