es 查询更新操作

# es 查询更新操作

# _*_ coding: utf-8 _*_
import time
import datetime
import pymysql
from elasticsearch import  Elasticsearch
from urllib3.connectionpool import xrange

# class EsClient():

es_host = "192.168.8.190"
port = 9200
timeout = 15000

global index
global CLIENT
index = "content-2019.12.30"
CLIENT = Elasticsearch(hosts=es_host,port=port,timeout=timeout)

# 数据格式化
def get_page_data(result):
    res = []
    for hit in result[‘hits‘][‘hits‘]:
        # print(hit)
        res.append({hit["_source"]["clientip"]: hit["_source"]["version"]})
    print(res)
    return res

# 数据的分页操作
def load_all_data(scroll_id):
    if scroll_id:
        page = CLIENT.scroll(scroll_id=scroll_id, scroll=‘10m‘)
        scroll_id = page[‘_scroll_id‘]
    else:
        page = CLIENT.search(index=index, scroll=‘10m‘, size=10000)
        scroll_id = page[‘_scroll_id‘]
    # print(page)
    data = page["hits"][‘hits‘]
    total = page[‘hits‘][‘total‘][‘value‘]
    print(len(data), total)
    return  {"data": data, "scroll_id": scroll_id, "length": len(data), "total": total}

# 数据的查询操作 # 默认只给10000条数据
def query(body):
    page = CLIENT.search(index=index, body=body)
    data = page["hits"][‘hits‘]
    total = page[‘hits‘][‘total‘][‘value‘]
    print(len(data), total)
    return  {"data": data, "length": len(data), "total": total}

#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"}})   

# 更新一条数据
def run_update_1():
    print("开始修改")
    body={"doc":{"site": "小武的测试站-+++++"}}
    CLIENT.update(index=‘content-2019.12.30‘, id=‘y-O4nG8Bpdw5Z6bISieJ‘, body=body)
    print("修改成功")
    pass

# 批量更新, 跟新满足条件的数据
def run_update_all():
    print("开始修改")
    query = {
        "script": {"source": "ctx._source[‘site‘]=‘小武的测试站‘" },  # 更新语句,将数据集合更改
        ‘query‘: {‘match‘: {‘site‘: ‘生意地‘}}                       # 查询语句,将满足条件的值进行筛选出来
        }
    CLIENT.update_by_query(index=‘content-2019.12.30‘, body=query)
    print("修改成功")
    pass

if __name__ == "__main__":
    run_update_all()

原文地址:https://www.cnblogs.com/xiao-xue-di/p/12187531.html

时间: 2024-10-08 23:03:51

es 查询更新操作的相关文章

python中的MySQL数据库操作 连接 插入 查询 更新 操作

MySQL数据库 就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立“表”,什么是数据库的表呢?下面摘抄自维基百科对数据库表的简要解释,要想详细了解,需要看官在找一些有关数据库的教程和书籍来看看. 在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系.它由纵向的列和横向的行组成,例如一个有关作者信息的名为 authors 的表中,每个列包含的是所有作者的某个特定类型的信息,比如

子查询更新操作的坑

子查询我相信大部分人都写过,但是昨天遇到一个比较坑的问题,由于有较好的备份,很短时间就恢复了误操作数据,但是这个问题值得分享.首先建立如下测试表:CREATE TABLE course (student_id INT(11),course VARCHAR(20));INSERT INTO course VALUES ('1', '测试1');INSERT INTO course VALUES ('2', '测试2');INSERT INTO course VALUES ('3', '测试3');

Mysql中实现多表关联查询更新操作

今天一下要记录一下才行了,每次都要去网上查找方法,每次都难找得要命 Mysql在更新某些字段的数据时,有时候会依据其他表的数据进行更新,需要通过关联后对不同的行更新不同的值,传统的update set没法实现,可以用下面的方法来实现 UPDATE `widetable_solr_field` a INNER JOIN `widetable_field_increat` b SET a.`compose` = b.`udf` WHERE a.`fname` = CONCAT('t',b.`tabl

思考线上如何既保证不影响查询,又能做更新操作

目前遇到的情况有: 一.数据库进行在线ddl(修改表结构和字段) 也是使用重名表名的方式.复制一张表,包括里面的数据,假设名称为tmp.在这张tmp表上面执行dll语句操作.此时要记录某个时刻开始对数据库的更新操作sql,缓存起来. 执行dll操作完毕.就把之前缓存起的sql放到这个tmp表中执行一遍. 二.sphinx重建索引.此时要不能关掉shpinx,要保证能够进行正常的查询服务 使用的是重名名的方式.把最新的索引结果保存在一个.new这样的文件中.原来的所以文件假设是master,那么现

Es查询结果集默认是10000,更新设置

Es查询结果集默认是10000,结果集大小是int,最大为21亿左右 PUT _all/_settings?preserve_existing=true { "index.max_result_window" : "2000000000" } 将所有的索引结果窗口集改为20亿,这个是已经存在的索引 新建的索引还会默认是10000,需要修改模板配置 删除模板,在原模板加入"max_result_window":2000000000     然后重新

oracle学习篇六:更新操作、事务处理

----------------1.数据库更新操作----------------------------- select * from tab;--查询表 drop table siebel_user;--删除表 --copy一份表结构create table myemp as select * from emp; select * from myemp; --插入记录insert into myemp(empno,ename,job,hiredate,sal,comm,deptno) val

关于怎么C#控制台窗口中怎么创建连接查询数据库操作

首先需要新建一张表,为了测试随建了一张学生表 新建号一张表之后就可以对数据库进行操作了 列举了常用的增删改查 操作 static void Main(string[] args)        { string str1="";            SqlConnection sqlcon = new SqlConnection("Data Source=.;Initial Catalog=db_user;Persist Security Info=True;User ID

MySQL表更新操作

1.  使用insert语句向表插入一条新记录,语法是:insert into 表名 [(字段列表)] values(值列表). 2.  使用set 语句更新操作与字符集,例如setcharacter_set_client =latin1\gbk\utf8; 3.  使用delete语句删除表记录,例如delete from 表名 where 条件表达式: 4.  使用insert语句可以一次性地向表中批量插入多条记录,语句是:insert  into 表名 [(字段名)]values (值列表

CentOS更换源和软件更新操作

系统版本: CentOS-6.4-x86_64-minimal 此系统为CD版本,所以基本是属于最小化安装版本.现将系统默认源更换成网易源,保证下载软件的速度.步骤如下: 1.下载新源及将本地源备份 [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] ~]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo [[email protected] ~]# mv C