Elasticsearch怎么安装及在Python中怎么使用
Elasticsearch怎么安装及在Python中怎么使用,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
官网对Elasticsearch 介绍的第一句话:
Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases.
Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。Elasticsearch 的底层是开源库 Lucene。 Lucene是一个更加底层的搜索引擎,但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elasticsearch 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。可以这样理解,Lucene就好像是百度,然后你在百度的基础上开发了一个更高级,方便的搜索引擎,就是Elasticsearch 。Elasticsearch可以看做是一个NoSQL的数据库,提供数据的增删改查等基础功能。什么是NoSQL呢?
"Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable
下一代主要解决如下问题的数据库: 非关系型的,分布式的,开源的并且可以扁平扩展。
好,基本概念就说到这里,如果不懂也不影响你使用ElasticSearch,可以简单理解为它就是一个数据库,可以存放数据,但是存储的数据不是类似MySQL之类的结构化数据,最重要的是,ElasticSearch的检索速度非常快,基本查一条数据在毫秒级。另外还有一个基于Lucene的搜索引擎叫做 Solr, 它是Java搜索引擎服务器。
今天主要介绍一下怎么安装和在Python中怎么使用。
1. 安装-Ubuntu
1.1 ElasticSearch
下载地址: https://www.elastic.co/cn/downloads/elasticsearch
直接下载 zip文件就可以,下载之后,cd到安装的文件夹下面,然后执行:
./bin/elasticsearch
这样就开启了ElasticSearch服务,
然后执行:
curl http://localhost:9200/
这里如果没安装curl的话,需要先安装。
1.2 Kibana
Kibana是一个ElasticSearch的管理工具,可以可视化 Elasticsearch 中的数据,顺便也就下载了吧。这个挺好用的,功能很多,我也在摸索中。。
地址: https://www.elastic.co/cn/products/kibana
下载之后还是一样,cd到解压的文件下面,执行
./bin/kibana
然后打开浏览器,输入:
http://localhost:5601
然后你就能看到一个比较帅的界面,在左边有个Dev的选项,这里可以写各种增删改查的语句。
2. Python中使用Elasticsearch
2.1 安装
Python 中的Elasticsearch模块是Elasticsearch基于Python的客户端。安装很简单,直接用pip就可以,现在安装的版本是6.0.0.(2018-1-5)
pip install elasticsearch 或者
pip3 install elasticsearch
2.2 创建索引
from elasticsearch import Elasticsearch
es = Elasticsearch(hosts="localhost:9200")
# 这里默认是9200端口,如果你要把数据存到
# 别的地方(服务器),改一下这个地址就可以。
es.create(index='test_index',
doc_type='post')
2.3 将数据存入到ES中
数据存储有三种方法,一种是用index直接单条存入,一种是用indices类下面的create方法,如果索引存在则直接存入,如果不存在则创建索引,然后存入。还有一种是用bulk方法批量存,这个是比较常用的方法。你可以根据你的实际任务来选择。
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
es = Elasticsearch(hosts="localhost:9200")
index_name = "test_index"
try:
# 每次存入数据前,可以做个索引
# 是否存在的判断,防止冲突。
es.indices.delete(index=index_name)
except:
pass
# 单条存入
es.index(index="test_index",
doc_type="post",
id=1,
body={
"这里是你的数据": "这里是你的数据"}
)
# 或者
es.indices.create(index=index_name,
body={
"这里是你的数据": "这里是你的数据"}
)
# 批量存储
with open("file_test.txt", 'r') as fr:
lines = fr.readlines()
i = 0
bulk_data = []
for line in lines:
data = {
"_index": "test_index",
"_type": "post",
"_source": {
"content": line}
}
bulk_data.append(data)
i += 1
# 每隔10000条数据存一次。
if i % 10000 == 0:
bulk(es, bulk_data)
bulk_data = []
2.3 检索数据
当把数据存入ES之后,就是检索了,不然存进去不用,那就真的没啥用了,是吧。检索也比较简单,主要是要理清这里面的逻辑关系是,实在不懂就多试试。举个栗子。
body = {
"query": {
"match": {
"title": {
"query": "中国 "
}
}
}
}
es.search(index="test_index",
doc_type="post",
body=body)
ElasticSearch主要是用来做检索的,你可以把它就理解为一个百度。所以熟练使用检索数据是很重要的。检索的时候,主要就是那个body里面写的东西,里面的query,match,是关键字,这个不能修改,title是你存储的时候定义的字段名字,然后"中国"是你要检索的内容。
看完上述内容,你们掌握Elasticsearch怎么安装及在Python中怎么使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!