首页 > 编程语言 >python操作elasticsearch 记录

python操作elasticsearch 记录

时间:2023-05-06 15:56:19浏览次数:33  
标签:index 记录 python my Elasticsearch elasticsearch 文档 type id

一、 环境

Elasticsearch5.x, python3.6, 注意Elasticsearch不同版本的区别,比如以下几条:

  1. _id 字段变为 id 字段:在 Elasticsearch 5 中,文档的唯一标识符使用 _id 字段。而在 Elasticsearch 6 和 7 中,唯一标识符改为使用 id 字段。在 Elasticsearch 7 中,_id 字段被重新引入,并与 id 字段共同使用,用于向后兼容 Elasticsearch 5 和 6 的代码。

  2. 类型的改变:在 Elasticsearch 5 中,文档类型使用 type 字段指定。Elasticsearch 6 中取消了多个type, Elasticsearch 7 中取消了type

  3. Elasticsearch 7 引入了文档类型(document type)的概念,用于区分不同类型的文档数据。文档类型并不是索引的属性,而是文档本身的属性,用于帮助用户对文档进行分类和查询。。

  4. Elasticsearch 在版本迭代中升级修改了许多功能,同样在使用python客户端的时候注意自己使用的版本

二、示例

from elasticsearch5 import Elasticsearch
from elasticsearch5 import helpers


class ElasticsearchDemo:

    def __init__(self):
        # 创建客户端,将参数替换为你的es ip,port
        self.client = Elasticsearch(host=config.es['host'], port=config.es['port'])

    def read_fucn(self):
        # 读取数据
        # 构造查询 DSL
        query = {
            "query": {
                "match": {
                    "message": "demo"
                }
            }
        }

        # 执行查询
        res = self.client.search(index="my-index", body=query)
        # 处理查询结果
        for hit in res['hits']['hits']:
            print(hit['_source'])

    def write_fucn(self):
        # 写入数据

        # 构造要写入的文档
        doc = {"message": "demo1"}
        # 使用 index() 方法写入文档到 Elasticsearch 中
        res = self.client.index(index="my-index", doc_type="my-type", id=1, body=doc)
        # 打印写入结果
        print(res)

    def batch_fucn(self):
        # 批量写入
        # 构造要写入的文档列表
        docs = [
            {"_index": "my-index", "_type": "my-type", "_id": "1","_source":{"message": "demo1"}},
            {"_index": "my-index", "_type": "my-type", "_id": "2", "_source":{"message": "demo2"}},
            {"_index": "my-index", "_type": "my-type", "_id": "3", "_source":{"message": "demo3"}}
        ]
        # 使用 bulk() 方法批量写入文档
        success, err = helpers.bulk(self.client, docs)
        print(success, err)
        # 打印写入成功的文档数量
        print("Wrote %d documents" % success)

 

需要注意的是,上面的示例代码中使用了默认的 Elasticsearch 配置。如果您的 Elasticsearch 配置不同,您需要在 Elasticsearch() 方法中指定相应的参数。另外,如果要写入的文档已经存在,index() 方法将会更新该文档。如果您想要强制写入新的文档而不是更新已有文档,可以使用 create() 方法代替 index() 方法

三、图形化客户端工具(常用)

1 ElasticSearch Head

  https://github.com/mobz/elasticsearch-head

  也可以安装google扩展程序

  2 Kibana

       在安装ElasticSearch 的时候一起安装起来

  官网:https://www.elastic.co/cn/kibana/

 

标签:index,记录,python,my,Elasticsearch,elasticsearch,文档,type,id
From: https://www.cnblogs.com/wxbn/p/17377621.html

相关文章

  • 戴尔笔记本u盘安装Ubuntu记录
    1.镜像下载www.ubuntu,com2.启动盘制作工具名称:rufus网址:Rufus-轻松创建USB启动盘界面: 3.一些问题(1)安装ubuntu18时安装类型不显示进入BIOS(dell是开机时按F2)的Ssystemconfiguration----sata设置----更改为ACHI—apply保存—exit退出......
  • 通话记录生成器安卓版下载,手机通话记录生成器app,一键批量生成通话记录
    铁牛通话记录生成器是可以批量自动生成通话记录的app软件。如何“铁牛通话记录生成器下载”?这段话的这几个网都可以,复制它们到手机浏览器打开就可以。通话记录生成器下载jp155.com,通话记录生成器安卓版下载jp1988.com,下载通话记录生成器app,体验通话记录生成器在线,了解通话记录生成......
  • 番外篇:分享一道用Python基础+蒙特卡洛算法实现排列组合的题目(附源码)
    今日鸡汤夕阳无限好,只是近黄昏。    大家好,我是Python进阶者。    是不是觉得很诧异?明明上周刚发布了这篇:分享一道用Python基础+蒙特卡洛算法实现排列组合的题目(附源码),今天又来一篇,名曰番外篇!其实今天是想给大家分享【......
  • 分享一道用Python基础+蒙特卡洛算法实现排列组合的题目(附源码)
    今日鸡汤沙场烽火连胡月,海畔云山拥蓟城。    大家好,我是Python进阶者。这篇文章的题目真的是很难取,索性先取这个了,装个13好了。前言    前几天在才哥交流群里,有个叫【RickXiang】的粉丝在Python交流群里问了一道关于排列组合的问题,初步一看觉得很简单,实际上确实是有难度的......
  • Python函数介绍:getattr()、setattr()、hasattr()
    在Python中我们通常对类的操作中,常常会判定某个属性是否是在这个类中,也会动态的为这个类更改\增添的某些属性和方法。这时我们会常常用到这个几个重要的Python内置函数,分别是getattr()、setattr()、hasattr()。1、getattr(obj,name[,default])obj表示指定的类实例对......
  • 使用python脚本传递参数:(三种方式可收藏)
    背景:使用python脚本传递参数在实际工作过程中还是比较常用,以下提供了好几种的实现方式:一、使用sys.argv的数组传入说明:使用sys.argv必须按照先后的顺序传入对应的参数;sys.argv则封装了传入的参数数据,作为数组的方式已经传入importsysprint("传入参数的总长度为:",len(sys.ar......
  • WEB|[SUCTF 2019]Pythonginx
    源码@app.route('/getUrl',methods=['GET','POST'])defgetUrl():url=request.args.get("url")host=parse.urlparse(url).hostnameifhost=='suctf.cc':#解析主机名,不能是suctf.ccreturn......
  • python IO多路复用理解记录
    一、简述:1什么是多路I/O复用机制Python中的多路I/O复用机制是一种高效的编程技巧,用于同时监视多个文件描述符是否有可读、可写或错误事件,并在这些描述符中任意一个或多个有事件发生时立即进行响应。2使用多路I/O复用机制的目的同时处理多个连接时提高网络I/O效率,从......
  • dolphinscheduler-3.1.5异常记录
    1.背景运行任务经常遇到TenantCode:testdoesn'texist,可是我已经通过test用户登录了服务器了,说明test用户是存在的。后来发现通过某个woker是不报错的,但是其他worker报错,实际上各个worker都是创建了test用户的。2.解决2.1猜测是缓存的问题,缓存失效导致差不到,因为配置了Caffe......
  • django的web项目中重定向页面时的部分信息传输——以删除含有分页的列表记录为例
    问题:在管理系统界面往往是有分页的,初次编写列表的删除功能时很可能会出现删完之后页面跳转到第一页的问题,或者筛选完之后删除某一项结果删完之后跳转到未筛选页面。与实际分页管理的效果大庭相径。解决思路:1.起初只遇到了分页的情况,解决方法很简单,在删除按钮的href中直接传值,例......