Python-ElasticSearch,python对ES进行写入、更新、删除、搜索_蜗牛!Destiny的博客-CSDN博客_python es.search


本站和网页 https://blog.csdn.net/u013429010/article/details/81746179 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Python-ElasticSearch,python对ES进行写入、更新、删除、搜索_蜗牛!Destiny的博客-CSDN博客_python es.search
Python-ElasticSearch,python对ES进行写入、更新、删除、搜索
蜗牛!Destiny
于 2018-08-16 18:03:58 发布
63862
收藏
154
分类专栏:
ElasticSearch
Python
文章标签:
ElasticSearch
es
python-
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013429010/article/details/81746179
版权
ElasticSearch
同时被 2 个专栏收录
1 篇文章
1 订阅
订阅专栏
Python
7 篇文章
0 订阅
订阅专栏
Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索引擎功能的库。但是 Lucene 仅仅只是一个库。为了利用它,你需要编写 Java 程序,并在你的 java 程序里面直接集成 Lucene 包。 更坏的情况是,你需要对信息检索有一定程度的理解才能明白 Lucene 是怎么工作的。Lucene 是 很 复杂的。 在上一篇博客中介绍了ElasticSearch的简单使用,接下来记录一下ElasticSearch的查询: #创建index索引
#创建索引,索引的名字是my-index,如果已经存在了,就返回个400,
#这个索引可以现在创建,也可以在后面插入数据的时候再临时创建
es.indices.create(index='my-index',ignore)
#插入数据
#插入数据,(这里省略插入其他两条数据,后面用)
es.index(index="my-index",doc_type="test-type",id=01,body={"any":"data01","timestamp":datetime.now()})
#get获取数据
#查询数据,两种get and search
#get获取
res = es.get(index="my-index", doc_type="test-type", id=01)
es.get(index='indexName', doc_type='typeName', id='idValue')
#删除数据
delete:删除指定index、type、id的文档
es.delete(index='indexName', doc_type='typeName', id='idValue')
#条件删除
delete_by_query:删除满足条件的所有数据,查询条件必须符合DLS格式
query = {'query': {'match': {'sex': 'famale'}}}# 删除性别为女性的所有文档
query = {'query': {'range': {'age': {'lt': 11}}}}# 删除年龄小于11的所有文档
es.delete_by_query(index='indexName', body=query, doc_type='typeName')
#条件更新
update_by_query:更新满足条件的所有数据,写法同上删除和查询
#批量写入、删除、更新
doc = [
{"index": {}},
{'name': 'jackaaa', 'age': 2000, 'sex': 'female', 'address': u'北京'},
{"index": {}},
{'name': 'jackbbb', 'age': 3000, 'sex': 'male', 'address': u'上海'},
{"index": {}},
{'name': 'jackccc', 'age': 4000, 'sex': 'female', 'address': u'广州'},
{"index": {}},
{'name': 'jackddd', 'age': 1000, 'sex': 'male', 'address': u'深圳'},
doc = [
{'index': {'_index': 'indexName', '_type': 'typeName', '_id': 'idValue'}}
{'name': 'jack', 'sex': 'male', 'age': 10 }
{'delete': {'_index': 'indexName', '_type': 'typeName', '_id': 'idValue'}}
{"create": {'_index' : 'indexName', "_type" : 'typeName', '_id': 'idValue'}}
{'name': 'lucy', 'sex': 'female', 'age': 20 }
{'update': {'_index': 'indexName', '_type': 'typeName', '_id': 'idValue'}}
{'doc': {'age': '100'}}
es.bulk(index='indexName', doc_type='typeName', body=doc)
#批量更新也可以采用如下的方式进行json拼装,最后写入
for line in list:
action = {
"_index": self.index_name,
"_type": self.index_type,
"_id": i, #_id 也可以默认生成,不赋值
"_source": {
"date": line['date'],
"source": line['source'].decode('utf8'),
"link": line['link'],
"keyword": line['keyword'].decode('utf8'),
"title": line['title'].decode('utf8')}
i += 1
ACTIONS.append(action)
success, _ = bulk(self.es, ACTIONS, index=self.index_name, raise_on_error=True)
查询所有数据
搜索所有数据
es.search(index="my_index",doc_type="test_type")
# 或者
body = {
"query":{
"match_all":{}
es.search(index="my_index",doc_type="test_type",body=body)
#term与terms
term
body = {
"query":{
"term":{
"name":"python"
# 查询name="python"的所有数据
es.search(index="my_index",doc_type="test_type",body=body)
terms
body = {
"query":{
"terms":{
"name":[
"python","android"
# 搜索出name="python"或name="android"的所有数据
es.search(index="my_index",doc_type="test_type",body=body)
#match与multi_match
# match:匹配name包含python关键字的数据
body = {
"query":{
"match":{
"name":"python"
# 查询name包含python关键字的数据
es.search(index="my_index",doc_type="test_type",body=body)
# multi_match:在name和addr里匹配包含深圳关键字的数据
body = {
"query":{
"multi_match":{
"query":"深圳",
"fields":["name","addr"]
# 查询name和addr包含"深圳"关键字的数据
es.search(index="my_index",doc_type="test_type",body=body)
#ids
body = {
"query":{
"ids":{
"type":"test_type",
"values":[
"1","2"
# 搜索出id为1或2d的所有数据
es.search(index="my_index",doc_type="test_type",body=body)
#复合查询bool bool有3类查询关系,must(都满足),should(其中一个满足),must_not(都不满足)
body = {
"query":{
"bool":{
"must":[
"term":{
"name":"python"
},
"term":{
"age":18
# 获取name="python"并且age=18的所有数据
es.search(index="my_index",doc_type="test_type",body=body)
#切片式查询
body = {
"query":{
"match_all":{}
"from":2 # 从第二条数据开始
"size":4 # 获取4条数据
# 从第2条数据开始,获取4条数据
es.search(index="my_index",doc_type="test_type",body=body)
#范围查询
body = {
"query":{
"range":{
"age":{
"gte":18, # >=18
"lte":30 # <=30
# 查询18<=age<=30的所有数据
es.search(index="my_index",doc_type="test_type",body=body)
#前缀查询
body = {
"query":{
"prefix":{
"name":"p"
# 查询前缀为"赵"的所有数据
es.search(index="my_index",doc_type="test_type",body=body)
#通配符查询
body = {
"query":{
"wildcard":{
"name":"*id"
# 查询name以id为后缀的所有数据
es.search(index="my_index",doc_type="test_type",body=body)
#排序
body = {
"query":{
"match_all":{}
"sort":{
"age":{ # 根据age字段升序排序
"order":"asc" # asc升序,desc降序
#filter_path 响应过滤
# 只需要获取_id数据,多个条件用逗号隔开
es.search(index="my_index",doc_type="test_type",filter_path=["hits.hits._id"])
# 获取所有数据
es.search(index="my_index",doc_type="test_type",filter_path=["hits.hits._*"])
#count 执行查询并获取该查询的匹配数
# 获取数据量
es.count(index="my_index",doc_type="test_type")
#度量类聚合 获取最小值
body = {
"query":{
"match_all":{}
},
"aggs":{ # 聚合查询
"min_age":{ # 最小值的key
"min":{ # 最小
"field":"age" # 查询"age"的最小值
# 搜索所有数据,并获取age最小的值
es.search(index="my_index",doc_type="test_type",body=body)
获取最大值
body = {
"query":{
"match_all":{}
},
"aggs":{ # 聚合查询
"max_age":{ # 最大值的key
"max":{ # 最大
"field":"age" # 查询"age"的最大值
# 搜索所有数据,并获取age最大的值
es.search(index="my_index",doc_type="test_type",body=body)
获取和
body = {
"query":{
"match_all":{}
},
"aggs":{ # 聚合查询
"sum_age":{ # 和的key
"sum":{ # 和
"field":"age" # 获取所有age的和
# 搜索所有数据,并获取所有age的和
es.search(index="my_index",doc_type="test_type",body=body)
获取平均值
body = {
"query":{
"match_all":{}
},
"aggs":{ # 聚合查询
"avg_age":{ # 平均值的key
"sum":{ # 平均值
"field":"age" # 获取所有age的平均值
# 搜索所有数据,获取所有age的平均值
es.search(index="my_index",doc_type="test_type",body=body)
更多的搜索用法: https://elasticsearch-py.readthedocs.io/en/master/api.html
蜗牛!Destiny
关注
关注
31
点赞
154
收藏
打赏
评论
Python-ElasticSearch,python对ES进行写入、更新、删除、搜索
Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索引擎功能的库。但是 Lucene 仅仅只是一个库。为了利用它,你需要编写 Java 程序,并在你的 java 程序里面直接集成 Lucene 包。 更坏的情况是,你需要对信息检索有一定程度的理解才能明...
复制链接
扫一扫
专栏目录
python操作ES的三种办法
go|Python的个人博客
06-23
2073
python操作es
Python 2.x与Python 3​​.x版本介绍
lkr
10-06
128
Python 2.x与Python 3​​.x版本介绍
目前市场上有两个常用的 Python 版本,分别是Python 2.x和Python 3.x。新的 Python 程序建议使用Python 3.0版本的语法。
评论 3
您还未登录,请先
登录
后发表或查看评论
python操作ES数据库
什么TM的叫惊喜
09-04
1万+
文章目录1、ES数据库和关系型数据库对比2、连接ES数据库3、插入数据4、查询数据
1、ES数据库和关系型数据库对比
一个ES集群可以包含多个索引(数据库),每个索引又包含了很多类型(表),类型中包含了很多文档(行),每个文档使用 JSON 格式存储数据,包含了很多字段(列)
关系型数据库
数据库
ES
索引
类型
文档
字段
2、连接ES数据库
from elasticsearch import Elasticsearch
es = Elasticsearch([{"ho
python es查询
最新发布
王小二的博客
10-24
978
python es查询
python操作es数据
a18852867035的博客
03-23
7296
不知不觉进入职场已经大半年了,有些收获,同时又感觉自己的渺小,感觉自己还需要学习很多。最近项目中需要利用Python读写es数据,试了网上的一些方法,有的方法已经过期了,有的报错,花了一段时间才成功搞定。现在将这些方法记录下来,方便自己也方便其它读者。
1)首先安装相应es的包;
pip install elasticsearch
2)读取ES数据;
from elasticsearch impo...
python es查询所有数据_Python-ElasticSearch搜索查询的讲解
weixin_39805529的博客
02-09
2025
Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可能是目前存在的,不论开源还是私有的,拥有最先进,高性能和全功能搜索引擎功能的库。但是 Lucene 仅仅只是一个库。为了利用它,你需要编写 Java 程序,并在你的 java 程序里面直接集成 Lucene 包。 更坏的情况是,你需要对信息检索有一定程度的理解才能明...
Python Elasticsearch的介绍、使用操作详细步骤
python程序员
02-01
791
ES介绍
官方文档地址:https://elasticsearch-py.readthedocs.io/
什么是 Elasticsearch
想查数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据。然而对于我们自己的业务数据来说,肯定就没必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便存储和检索,Elasticsearch 就是不二选择,它是一个全文搜索引擎,可以快速地储存、搜索和分析海量数据。
Elasticsearch是
ES 简单查询方式:es.search #批量查询方式,:scan
WangYouJin321的博客
05-29
2626
es查询方式
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from elasticsearch import Elasticsearch
from elasticsearch5.helpers import scan
def do_scroll2(es, index, body):
try:
# raises an excep...
elasticsearch 搜索引擎的使用
javazilu的专栏
09-08
588
1. 常见的搜索引擎介绍
1. Lucene
特点:搜索引擎库,功能强大,接入复杂
Lucene是一款高性能的、可扩展的信息检索工具库。除了高性能外,Lucene对搜索功能开发提供了强大支持,如短语查询、通配符查询、连接查询、分组查询等。但是由于Lucene只是一个库,再加上其自身的专业性和复杂性,开发者在接入Lucene前,必须要深入了解检索的相关知识。为了降低Lucene接入的复杂性,出现了两款针对Lucene的项目应用,即Solr和Elasticsearch。
2. Solr
特点:基于Lucene
如何使用es实现搜索功能2
qq_36301061的博客
12-29
1221
之前1写的是es相关的设计跟dsl语法怎么写(怎么实现京东搜索页面的功能)这个是把dsl语法写成java代码
前端传来的参数映射类
public class ESRequestParam {
/**
* 页面传递过来的全文匹配关键字
*/
private String keyword;
/**
* 品牌id,可以多选
*/
private List<Long> brandId;
/**
* 分类id
ES查询原理和timeout讲解
Xlucas的博客
11-05
7621
ES的查询过程
1、客户端发送请求到任意一个node,成为coordinate node
2、coordinate node对document进行路由,将请求转发到对应的node(primary或者replicanode上)上,此时使用round-robin随机轮询算法,在primary shard以及其所有的replica中随机选择一个,让读请求负载均衡
3、接收请求的node返回documen...
ElasticSearch的几种检索方式
weixin_41244495的博客
02-20
2297
主要分为以下几种:
1、query string search :查询字符串搜索
2、query DSL :特定领域的语言
3、query filter : 过滤查询
4、full-text search :(全文检索)
5、phrase search :(短语搜索)
6、highlight search :(高亮搜索)
有那些不懂的可以查看《Elasticsearch 权威指南》:https...
python Elasearch 查询
LeonTom的博客
03-31
263
python es 基本查询
占位1
python 操作ES
小僵尸打字员的博客
12-15
3977
python 操作es 的基操
配置部分
"""
@author xiaofei
@email
@auth
@desc
"""
import pymongo, json
from elasticsearch import Elasticsearch
from elasticsearch import helpers
...
【Task01】Numpy学习打卡
Xiao_Spring的博客
10-20
954
注:为了节约行数,默认import numpy as np已经写在每段代码前,不再重复写入,如果有新的包引入,会在代码头部import
一、常量
前言:
NumPy包括几个常量:
np.inf、np.NINF、np.PZERO & np.NZERO、np.nan、np.e、np.pi、np.euler_gamma、np.newaxis
1、正无穷大
numpy中正无穷大一共有五种表现形式:Inf = inf = infty = Infinity = PINF
NumPy 使用IEEE二进制浮点算法
ElasticSearch介绍和基本概念
deliciousion的博客
09-21
2万+
ElasticSearch(ES)是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎。ElasticSearch还是一个分布式文档数据库,其中每个字段均是被索引和数据且可被搜索,它能够扩展至数以百计的服务器存储以及处理PB级的数据。可以在很短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发动机。ElasticSearch是一个几乎实时的搜索平台。
python读取、写入以及删除es数据
weixin_56155400的博客
03-30
3724
最近这段时间被es所困扰,庆幸最终学会了python读取、删除和存储es,怕以后忘记了,把代码放出来:
用python批量更新es数据根据id_Python Elasticsearch批量操作客户端
weixin_39754603的博客
12-09
720
基于Python实现的Elasticsearch批量操作客户端by:授客 QQ:10335531221.代码用途Elasticsearch客户端,目的在于实现批量操作,如下:<1> 批量插入数据<2> 批量更新文档字段值<3> 批量新增文档字段值<4> 批量删除数据<5> 批量复制数据<6> 批量去除冗余数据2.测试环境Win...
Elasticsearch之四种查询类型和搜索原理(博主推荐)
weixin_30362233的博客
02-24
2025
  Elasticsearch Client发送搜索请求,某个索引库,一般默认是5个分片(shard)。
  它返回的时候,由各个分片汇总结果回来。
  官网API
https://www.elastic.co/guide/en/elasticsearch/client/java-api/2.4/index.html
...
ElasticSearch 匹配查询(match、match_phrase)
鲨鱼辣椒的博客
08-31
3052
ElasticSearch 匹配查询(match、match_phrase)
match查询属于全文查询,在查询时,ES会先分析查询字符串,然后根据分词构建查询。
match_phrase在查询时也会先分析查询字符串,然后对这些词项进行搜索,不同的是match_phrase查询只会保留包含全部查询字符串的文档
1、先向ES查询俩个文档,以便测试:
PUT test2/_doc/1
"name": "宝马法拉利兰博基尼"
PUT test2/_doc/2
"name": "宝马兰博基尼布
简述ES(ElasticSearch入门简介)
热门推荐
Python开发工程师
08-03
2万+
根据ES的官方文档,可以简单定义以下3点:
1 .一个分布式的实施文档存储,每个字段可以被索引与搜索
2 .一个分布式实时分析搜索引擎
3 .可以胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据。
Elasticsearch请求和HTTP请求类似,由以下几个相同的部件构成
curl -X<VERB>'<PROTOCOL>://<HOST...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
蜗牛!Destiny
CSDN认证博客专家
CSDN认证企业博客
码龄9年
暂无认证
71
原创
4万+
周排名
179万+
总排名
20万+
访问
等级
2039
积分
41
粉丝
62
获赞
18
评论
316
收藏
私信
关注
热门文章
Python-ElasticSearch,python对ES进行写入、更新、删除、搜索
63855
hadoop搭建四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍
23905
Redis INCR和INCRBY对指定key的value进行数字相加
12238
python使用hdfs3模块对hdfs进行操作
6904
CDH5(5.15.0)中修改spark的yarn.nodemanager.resource.memory-mb和yarn.scheduler.maximum-allocation-mb配置
6310
分类专栏
Java
22篇
环境
17篇
Python
7篇
ElasticSearch
1篇
HDFS
1篇
CDH
6篇
Spark
9篇
数据结构与算法
1篇
Airflow
1篇
Flume
4篇
Hadoop
9篇
Kafka
1篇
Hbase
1篇
Maven
4篇
Eclipse
3篇
Redis
1篇
Yarn
1篇
MySQL
3篇
MongoDB
1篇
Django
3篇
最新评论
hadoop搭建四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍
qq_肥波:
请问怎么打开这两个配置文件的?
阿里云ECS Centos7使用Docker部署Django2.0 + mysql + nginx + uwsgi + supervisor,需要python2和python3共存
Dr.叶子:
这篇文章太多坑,希望博主多多改进
JVM性能优化--Java的垃圾回收机制
Tisfy:
好文!,正如:谁念迁客归来,老大伤名节。
hadoop搭建四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍
艳阳袭月:
可以放hadoop目录下面,这个我的没有报错
hadoop搭建四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍
艳阳袭月:
我有个疑问,在指定namenode和secondarynamenode那里,为什么不写hdfs://会出现找不到对应节点的情况?这里困扰了我很久
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
配置ng-zerro的nz-date-picker时间选择组件
离线安装Python、Locust以及第三方依赖包
性能测试-Locust分布式执行
2020年13篇
2019年29篇
2018年35篇
目录
目录
分类专栏
Java
22篇
环境
17篇
Python
7篇
ElasticSearch
1篇
HDFS
1篇
CDH
6篇
Spark
9篇
数据结构与算法
1篇
Airflow
1篇
Flume
4篇
Hadoop
9篇
Kafka
1篇
Hbase
1篇
Maven
4篇
Eclipse
3篇
Redis
1篇
Yarn
1篇
MySQL
3篇
MongoDB
1篇
Django
3篇
目录
评论 3
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
蜗牛!Destiny
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值