美文网首页微服务性能测试
python对es基础的增删改查

python对es基础的增删改查

作者: 互联网中的一个咸鱼 | 来源:发表于2019-11-22 21:52 被阅读0次

安装API

pip3 install elasticsearch  # pip自动安装最新版本

python对索引进行操作

建立es连接

from elasticsearch import Elasticsearch

# 默认host为localhost,port为9200.但也可以指定host与port
es = Elasticsearch()
创建索引
# 创建自定义的索引
es.indices.create(index="index003")
删除索引
es.indices.delete(index="index003")
判断索引存在
es.indices.exists(index="index003")  # 会返回布尔值
对索引加入mapping
mapping = {
    'properties': {
        'title': {
            'type': 'text',
            'analyzer': 'ik_max_word',
            'search_analyzer': 'ik_max_word'
        }
    }
}
es.indices.create(index='index001')
result = es.indices.put_mapping(index='index001', doc_type='_doc', body=mapping)

创建了一个新的索引,并且更新了他的mapping信息,mapping 信息中指定了分词的字段

python对索引的文档进行操作

插入数据
es.index(index="my_index",doc_type="test_type",id=0,body={"name":"python","addr":"深圳"})

es.create(index="index003",doc_type="_doc",id=1,body={"name":"jpx","age":30})

运行结果如下:

{'_index': 'news', '_type': 'politics', '_id': '1', '_version': 1, 'result': 'created', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_seq_no': 0, '_primary_term': 1}

结果中 result 字段为 created,代表该数据插入成功。

另外其实我们也可以使用 index() 方法来插入数据,但与 create() 不同的是,create() 方法需要我们指定 id 字段来唯一标识该条数据,而 index() 方法则不需要,如果不指定 id,会自动生成一个 id

数据插入成功之后,如何查看是否插入成功,如何插入成功就会查找到该数据,查看数据如下

获取数据
#get: 获取指定index、type、id所对应的文档
es.get(index="my_index",doc_type="test_type",id=1)

# search:查询满足条件的所有文档,没有id属性,且index,type和body均可为None
result = es.search(index="my_index")  # 获取这个索引的所有数据
result = es.search()  # 获取所有索引的所有数据

用search会查找到多个数据,结果会出现在hits字段里面,
其中total字段标明了查询的结果条目数,max_source代表了最大匹配分数

删除数据
#删除指定的index、type、id的文档
es.delete(index='indexName', doc_type='typeName', id=1)
更新数据
#update:更新指定index、type、id所对应的文档
#更新的主要点: 
#1. 需要指定 id 
#2. body={"doc": <xxxx>} , 这个doc是必须的
es.update(index="my_index",doc_type="test_type",id=1,body={"doc":{"name":"python1","addr":"深圳1"}})

更新数据结果如下

{'_index': 'news', '_type': 'politics', '_id': '1', '_version': 2, 'result': 'updated', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_seq_no': 1, '_primary_term': 1}

可以看到返回结果中,result 字段为 updated,即表示更新成功,另外我们还注意到有一个字段 _version,这代表更新后的版本号数,2 代表这是第二个版本,因为之前已经插入过一次数据,所以第一次插入的数据是版本 1,可以参见上例的运行结果,这次更新之后版本号就变成了 2,以后每更新一次,版本号都会加 1。

另外更新操作其实利用 index() 方法同样可以做到
index() 方法可以代替我们完成两个操作,如果数据不存在,那就执行插入操作,如果已经存在,那就执行更新操作,非常方便。

查询数据高级
from elasticsearch_dsl.connections import connections    ##导入的模块
from elasticsearch_dsl import Search

es = connections.create_connection(hosts=['10.0.122.124'])   ## 连接到装有ela的主机上
search = Search(using=es, index="nginx--filebeat-7.4.2-2019.11.22").filter(
     "match", clientip="221.228.109.90").query("match",clientip="221.228.109.90").
res = es.execute()     #使用execute方法将这个查询给提交到ela中
print(res)
print(es.count())

##返回的是一个<Response:  >对象 需要循环才能够得到
# for item in es:
#     print(item.age, item.name)
print(es.to_dict())
#结果是将上面的过滤条件变成字典{'query': {'bool': {'filter': [{'match': {'response': '200'}}], 'must': [{'match': {'clientip': '123.244.101.255'}}]}}}

几个字段的意义

using  
    指明用那个已经连接的对象
query  
    接收的是查询体语句
exclude
    接收的是不匹配的字段 就像 must_not
    
filter
    接收的是过滤语句 ,过滤的条件意思是在返回结果中有这些条件的信息  

相关文章

  • python对es基础的增删改查

    安装API python对索引进行操作 建立es连接 创建索引 删除索引 判断索引存在 对索引加入mapping ...

  • 关于python的list的增查删改

    说到增查删改,想起了数据库,我们在关系型数据库当中就会对表进行增查删改。 在python当中我们也可以对list进...

  • python+flask+uwsgi 后台管理系统

    python+flask+uwsgi 后台管理系统,使用python + flask 开发后台登陆,基础的增删改查...

  • Python

    Python 创建文件 Python 对数据库进行操作--增删改查 Python 对csv进行操作 Python ...

  • mysql的插入语句

    MySQL增删改查之增insert、replace

  • python 基础—增删改查

    (一)、列表: 1、列表里的数据分为:可变类型数据 and不可变类型数据可变类型数据有 : 数组、集合、字典不可变...

  • MYSQL数据库的增删改查

    MYSQL数据库的增删改查 一.对于库的增删改查 增create database 库名称;create data...

  • mysql与python交互之封装

    封装 '''python操作mysql进行增删改查的封装 1、增删改,代码类似 2、查询 代码分析 1、获取连接对...

  • Springboot2.x 两种方式操作增删改查Elastics

    1. 概述 Springboot2 对Elasticsearch进行增删改查有多种方式:通过ES的9300端口使用...

  • MySQL增删改查(3)

    前面梳理了增删改查的增、删、改,本篇主要是最常用的查的最基础部分。以下面这张表的来梳理 查操作通常是查一行或者多行...

网友评论

    本文标题:python对es基础的增删改查

    本文链接:https://www.haomeiwen.com/subject/izaqwctx.html