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 图片验证码代码
Dec 07 Python
浅谈Python中的私有变量
Feb 28 Python
对pandas中Series的map函数详解
Jul 25 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
Python标准库shutil用法实例详解
Aug 13 Python
pygame实现烟雨蒙蒙下彩虹雨
Nov 11 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
PyTorch如何搭建一个简单的网络
Aug 24 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 01 Python
基于Python实现天天酷跑功能
Jan 06 Python
pytorch--之halfTensor的使用详解
May 24 Python
Python import模块的缓存问题解决方案
Jun 02 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正则表达式之定界符和原子介绍
2012/10/05 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
UTF-8正则表达式如何匹配汉字
2015/08/03 PHP
php实现登陆模块功能示例
2016/10/20 PHP
Thinkphp整合微信支付功能
2016/12/14 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
JavaScript中两个感叹号的作用说明
2011/12/28 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
javascript设计模式之中介者模式Mediator
2014/12/30 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
vue组件如何被其他项目引用
2017/04/13 Javascript
单页面vue引入百度统计的使用方法示例详解
2018/10/13 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
复习Python中的字符串知识点
2015/04/14 Python
Python闭包实现计数器的方法
2015/05/05 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
python实现测试工具(一)——命令行发送get请求
2020/10/19 Python
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
EntityManager都有哪些方法
2013/11/01 面试题
写自荐信三大法宝
2014/01/24 职场文书
金融事务专业毕业生求职信
2014/02/23 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
Redis性能监控的实现
2021/07/09 Redis
HTML基础详解(下)
2021/10/16 HTML / CSS
关于MySQL中的 like操作符详情
2021/11/17 MySQL