python操作elasticsearch增、删、改、查
最近接触了个新东西——es数据库
这东西虽然被用的很多,但我是前些天刚刚接触的,发现其资料不多,学起来极其痛苦,写个文章记录下
导入库
from elasticsearch import Elasticsearch
启动起来
默认9200端口是数据库端口,因为要用python操作其它的图形化就省略了。这里不要太纠结于es的数据格式,它就是个大字典。
基础数据格式

这里我们存的数据是在_source字段中的,_index比较重要,类似于mysql中的database,其它不用管都是自动生成。(这条是怎么搜索出来的看下面)
增加
先创建数据库连接:
es_host = "127.0.0.1:9200"
es = Elasticsearch([es_host])
创建数据库:
es.indices.create(index="ip")
增加数据:
ip_body = {
"ip": "127.0.0.2",
"port": "81",
"finger": " weblogic",
"os": "windows",
"tag": "yidong",
"updateTime": ""
}
es.index(index="ip",body=ip_body)
增加的数据只要是字典格式就可以了,或者说json格式。但是最好不要使用复合json,
虽然存的时候没问题,但是查询时会有麻烦,我没解决,哪位大佬知道请告诉我。
删除
es.delete(index="ip",id="xxxxxx")
id就是查询到字典中的'_id'的内容
删除直接用id去索引比较方便,因为是唯一的20位字符组成的,这也是不建议自己设置id的原因
es.indices.delete(index="ip")
这样的话就直接删除数据库了
查找
这里是比较麻烦的点,对于用惯mysql的我是最恶心的地方!
首先我们看一下查找全部数据,类似于select *:
es.search(index=types, body={"query":{"match_all":{}}})
这样就是搜索全部数据的语句。
然后其它的搜索语句有很多组合方式,但我觉得都没啥实用的,因为不做搜索引擎吧
我这里只用了模糊和复合搜索就实现了全部功能,可能以后大小于的搜索也会有用
其实这里搜索语句就是改变body中的内容,但格式很恶心,我们单独拿出来看看:
body= {
"query":{
"bool":{"must":[{"prefix": {"url":"127"}},
{"prefix": {"status":"2"}}]
}
}
}
es.search(index="ip", body=body)
这个body里首先要搜索"query"是固定格式,然后bool代表复合搜索,
must代表条件必须(当然还有must not等),prefix代表模糊搜索,最后是搜索内容
在must里是一个list,list里嵌套模糊搜索的字典,当然可以在bool里加入其它条件,在条件里加入其它形式的搜索
很难受对吧。所以这种格式不能直接让前端传,你得加自己的处理函数。
而且这里不能搜索复合json中的值,语法会报错,我不知道如何解决。
更新
更新的格式也差不多,而且资料很少,我找到了一种解决方式,大家可以自由发挥。
利用painless(https://blog.csdn.net/u013613428/article/details/78134170/)是比较方便的,配合_id的唯一特性去修改值:
update_test={
"script": {
"lang":"painless",
"source": "ctx._source.tag=params.tag;",
"params":{"tag":"aaa","ip":"10.10.1.1"}
}
}
es.update(index="ip",id="xxxxxxx",body=update_test)
这里的script和"lang":"painless"都是固定格式
source字段中ctx._source是固定格式,代表搜索数据库中source字段,后接key名,=号后面params.key名很好理解
最后是要修改的params和值。
我这是快速上手的一个方式,具体的es原理没看,
如果哪位大佬理解的比较深刻有更好的方式提供或有解决复合json的方案欢迎联系我!
python操作elasticsearch增、删、改、查的更多相关文章
- php5.4以上 mysqli 实例操作mysql 增,删,改,查
<?php //php5.4以上 mysqli 实例操作mysql header("Content-type:text/html;charset=utf8"); $conn ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- python基础中的四大天王-增-删-改-查
列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...
- 简单的php数据库操作类代码(增,删,改,查)
这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...
随机推荐
- CVPR2020最新论文扫描盘点(上)
CVPR2020最新论文扫描盘点(上) 最近计算机视觉三大顶会之一CVPR2020接收结果已经公布,一共有1470篇论文被接收,接收率为22%,相比去年降低3个百分点,竞争越来越激烈.这里整理来自Tw ...
- YOLO3升级优化版!Poly-YOLO:支持实例分割!
YOLO3升级优化版!Poly-YOLO:支持实例分割! POLY-YOLO: HIGHER SPEED, MORE PRECISE DETECTION AND INSTANCE SEGMENTATI ...
- TensorRT 7.2.1 开发概要(下)
TensorRT 7.2.1 开发概要(下) 1.2. Where Does TensorRT Fit? 一般来说,开发和部署深度学习模型的工作流要经过三个阶段. Phase 1 is trainin ...
- Pytorch线性规划模型 学习笔记(一)
Pytorch线性规划模型 学习笔记(一) Pytorch视频学习资料参考:<PyTorch深度学习实践>完结合集 Pytorch搭建神经网络的四大部分 1. 准备数据 Prepare d ...
- 01:HTTP协议
软件开发架构 cs 客户端 服务端bs 浏览器 服务端ps:bs本质也是cs 浏览器窗口输入网址回车发生了几件事 """ 1 浏览器朝服务端发送请求 2 服务端接受请 ...
- PAT甲级 1093 Count PAT‘s (25 分) 状态机解法
题目 原题链接 The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the ...
- 基于TensorFlow的服装分类
1.导包 #导入TensorFlow和tf.keras import tensorflow as tf from tensorflow import keras # Helper libraries ...
- React Hooks使用避坑指南
函数组件比类组件更加方便实现业务逻辑代码的分离和组件的复用,函数组件也比类组件轻量,没有react hooks之前,函数组件是无法实现LocalState的,这导致有localstate状态的组件无法 ...
- HAOI2008 木棍分割 数据结构优化dp+二分答案
很久之前打的题,现在补篇博客 打滚动数组 #E. 木棍分割 Accepted 100 1712 ms 1512 KiB 2019-05-07 17:01:23 Short 不打滚动数组 #419. ...
- Mysql优化(出自官方文档) - 第四篇
Mysql优化(出自官方文档) - 第四篇 目录 Mysql优化(出自官方文档) - 第四篇 1 Condition Filtering 2 Constant-Folding Optimization ...
