python下使用ElasticSearch
一 什么是 ElasticSearch
Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:
- 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
- 可实现亿级数据实时查询
- 实时分析的分布式搜索引擎。
- 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
二 安装(windows下)
注意:Elasticsearch是用Java开发的,最新版本的Elasticsearch需要安装jdk1.8以上的环境
安装包下载完,解压,进入到bin目录,启动 elasticsearch.bat 即可
三 python操作ElasticSearch
from elasticsearch import Elasticsearch # 创建ES对象
obj=Elasticsearch()
# 创建索引index:索引的名字,body:数据,ignore:状态码
result=obj.indices.create(index="user",body={"userid":"","username":"maple"},ignore=400) print(result)
# {'error': {'root_cause': [{'type': 'parse_exception', 'reason': 'unknown key [userid] for create index'}], 'type': 'parse_exception', 'reason': 'unknown key [userid] for create index'}, 'status': 400}
# 删除索引
result = obj.indices.delete(index='user', ignore=[400, 404]) result = obj.delete(index='news', doc_type='politics', id=1)
# 插入数据
data={"userid":"","username":"maple","password":""}
# index:索引名字,id:文档ID,doc_type:文档类型,body:数据
result=obj.create(index="news",doc_type="politics", id=1, body=data)
# {'_index': 'news', '_type': 'politics', '_id': '1', '_version': 1, 'result': 'created', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_seq_no': 0, '_primary_term': 1}
print(result) # 更新数据
'''
不用doc包裹会报错
ActionRequestValidationException[Validation Failed: 1: script or doc is missing
'''
data ={"doc":{"userid": "", "username": "maple","password":"","test":"测试"}}
result = obj.update(index="news", doc_type="politics", body=data, id=1)
# {'_index': 'news', '_type': 'politics', '_id': '1', '_version': 7, 'result': 'updated', '_shards': {'total': 2, 'successful': 1, 'failed': 0}, '_seq_no': 6, '_primary_term': 1}
print(result) # 查询所有文档
query={"query":{"match_all":{}}}
# 查找名字叫maple的所有文档
# query = {'query': {'term': {'username': 'maple'}}}
# 查找年龄大于11的所有文档
# query = {'query': {'range': {'age': {'gt': 11}}}}
all_doc=obj.search(index="news", body=query)
# {'userid': '1', 'username': 'maple', 'password': '123456', 'test': '测试'}
print(all_doc["hits"]["hits"][0]["_source"])
python下使用ElasticSearch的更多相关文章
- 如何在python中使用Elasticsearch
什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度.谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据.然而对于我们自己的业务数据来说 ...
- python下ssh的简单实现
python下的ssh都需要借助第三方模块paramiko来实现,在使用前需要手动安装. 一.python实现ssh (1) linux下的ssh登录 root@ubuntu:~# ssh morra ...
- python下编译py成pyc和pyo
python下编译py成pyc和pyo 其实很简单, 用 python -m py_compile file.py python -m py_compile /root/src/{file1,f ...
- Python下划线与命名规范
Python下划线与命名规范 先看结论,节省只想知道答案你的宝贵时间: _xxx 不能用于from module import * 以单下划线开头的表示的是protected类型的变量.即保护类型只能 ...
- python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)
最近逐渐打算将工作的环境转移到ubuntu下,突然发现对于我来说,这ubuntu对于我这种上上网,收收邮件,写写博客,写写程序的时实在是太合适了,除了刚接触的时候会不怎么完全适应命令行及各种权限管理, ...
- CentOS 6.5 下安装 Elasticsearch 5
安装最新的 Elasticsearch 5 需要Java 8.所有先要确定环境中是否有Java 8.如果没有则需要安装. 1. 安装Java 8 首先使用 yum list installed | g ...
- Python下科学计算包numpy和SciPy的安装
转载自:http://blog.sina.com.cn/s/blog_62dfdc740101aoo6.html Python下大多数工具包的安装都很简单,只需要执行 “python setup.py ...
- python下的复杂网络编程包networkx的安装及使用
由于py3.x与工具包的兼容问题,这里采用py2.7 1.python下的复杂网络编程包networkx的使用: http://blog.sina.com.cn/s/blog_720448d30101 ...
- Python学习入门基础教程(learning Python)--5.1 Python下文件处理基本过程
Python下的文件读写操作过程和其他高级语言如C语言的操作过程基本一致,都要经历以下几个基本过程. 1. 打开文件 首先是要打开文件,打开文件的主要目的是为了建立程序和文件之间的联系.按程序访问文件 ...
随机推荐
- CometOJ Contest #3 C
题目链接:https://cometoj.com/contest/38/problem/C?problem_id=1542&myself=0&result=0&page=1&a ...
- css中图片有缩放和转动效果
现在html中利用div来包裹住一张图片. <div class="xuanzhuan"> <img src="images/top.png" ...
- 关于a[::-1]
b = a[i:j] 表示复制a[i]到a[j-1],以生成新的list对象,a[:]就相当于完整复制一份a b = a[i:j:s]表示:i,j与上面的一样,但s表示步进,缺省为1.即从i到j每 ...
- HDU 3966 /// 树链剖分+树状数组
题意: http://acm.hdu.edu.cn/showproblem.php?pid=3966 给一棵树,并给定各个点权的值,然后有3种操作: I x y z : 把x到y的路径上的所有点权值加 ...
- POJ 1265 /// 皮克定理+多边形边上整点数+多边形面积
题目大意: 默认从零点开始 给定n次x y上的移动距离 组成一个n边形(可能为凹多边形) 输出其 内部整点数 边上整点数 面积 皮克定理 多边形面积s = 其内部整点in + 其边上整点li / 2 ...
- css3 动画属性
transition Internet Explorer 9 以及更早版本的浏览器不支持 transition 属性. Internet Explorer 10.Firefox.Opera 和 Chr ...
- Ubuntu下怎么退出vim编辑器
vim其实就是vi的升级版,vi里的所有命令vim里都可以用,一般使用来说几乎没什么差别. 写在前面:进入vim编辑器之后无法退出并保存,可以尝试给要编辑的文件sudo权限(例如:sudo vim / ...
- react添加多个域名proxy代理,跨域
在package.json中加入如下: { "name": "demo", "version": "0.1.0", &q ...
- ssl checker
ssl checker showThis server is vulnerable to the POODLE attack. If possible, disable SSL 3 t` POODLE ...
- java——万年历
package oop; import java.util.Scanner; public class 万年历 { public static void main(String[] args) { / ...