189 8069 5689

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中怎么使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


当前文章:Elasticsearch怎么安装及在Python中怎么使用
文章起源:http://cdxtjz.cn/article/jijcip.html

其他资讯