Elasticsearch怎么安裝及在Python中怎么使用,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

目前創(chuàng)新互聯(lián)建站已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、內(nèi)江網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
官網(wǎng)對(duì)Elasticsearch 介紹的第一句話:
Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases.
Elasticsearch 是一個(gè)分布式的 RESTful 風(fēng)格的搜索和數(shù)據(jù)分析引擎,能夠解決不斷涌現(xiàn)出的各種用例。Elasticsearch 的底層是開源庫(kù) Lucene。 Lucene是一個(gè)更加底層的搜索引擎,但是,你沒法直接用 Lucene,必須自己寫代碼去調(diào)用它的接口。Elasticsearch 是 Lucene 的封裝,提供了 REST API 的操作接口,開箱即用。可以這樣理解,Lucene就好像是百度,然后你在百度的基礎(chǔ)上開發(fā)了一個(gè)更高級(jí),方便的搜索引擎,就是Elasticsearch 。Elasticsearch可以看做是一個(gè)NOSQL的數(shù)據(jù)庫(kù),提供數(shù)據(jù)的增刪改查等基礎(chǔ)功能。什么是NoSQL呢?
"Next Generation Databases mostly addressing some of the points: being non-relational, distributed, open-source and horizontally scalable
下一代主要解決如下問題的數(shù)據(jù)庫(kù): 非關(guān)系型的,分布式的,開源的并且可以扁平擴(kuò)展。
好,基本概念就說到這里,如果不懂也不影響你使用ElasticSearch,可以簡(jiǎn)單理解為它就是一個(gè)數(shù)據(jù)庫(kù),可以存放數(shù)據(jù),但是存儲(chǔ)的數(shù)據(jù)不是類似MySQL之類的結(jié)構(gòu)化數(shù)據(jù),最重要的是,ElasticSearch的檢索速度非常快,基本查一條數(shù)據(jù)在毫秒級(jí)。另外還有一個(gè)基于Lucene的搜索引擎叫做 Solr, 它是Java搜索引擎服務(wù)器。
今天主要介紹一下怎么安裝和在Python中怎么使用。
1. 安裝-Ubuntu
1.1 ElasticSearch
下載地址: https://www.elastic.co/cn/downloads/elasticsearch
直接下載 zip文件就可以,下載之后,cd到安裝的文件夾下面,然后執(zhí)行:
./bin/elasticsearch
這樣就開啟了ElasticSearch服務(wù),
然后執(zhí)行:
curl http://localhost:9200/
這里如果沒安裝curl的話,需要先安裝。
1.2 Kibana
Kibana是一個(gè)ElasticSearch的管理工具,可以可視化 Elasticsearch 中的數(shù)據(jù),順便也就下載了吧。這個(gè)挺好用的,功能很多,我也在摸索中。。
地址: https://www.elastic.co/cn/products/kibana
下載之后還是一樣,cd到解壓的文件下面,執(zhí)行
./bin/kibana
然后打開瀏覽器,輸入:
http://localhost:5601
然后你就能看到一個(gè)比較帥的界面,在左邊有個(gè)Dev的選項(xiàng),這里可以寫各種增刪改查的語句。
2. Python中使用Elasticsearch
2.1 安裝
Python 中的Elasticsearch模塊是Elasticsearch基于Python的客戶端。安裝很簡(jiǎn)單,直接用pip就可以,現(xiàn)在安裝的版本是6.0.0.(2018-1-5)
pip install elasticsearch 或者
pip3 install elasticsearch
2.2 創(chuàng)建索引
from elasticsearch import Elasticsearch
es = Elasticsearch(hosts="localhost:9200")
# 這里默認(rèn)是9200端口,如果你要把數(shù)據(jù)存到
# 別的地方(服務(wù)器),改一下這個(gè)地址就可以。
es.create(index='test_index',
doc_type='post')
2.3 將數(shù)據(jù)存入到ES中
數(shù)據(jù)存儲(chǔ)有三種方法,一種是用index直接單條存入,一種是用indices類下面的create方法,如果索引存在則直接存入,如果不存在則創(chuàng)建索引,然后存入。還有一種是用bulk方法批量存,這個(gè)是比較常用的方法。你可以根據(jù)你的實(shí)際任務(wù)來選擇。
from elasticsearch import Elasticsearch
from elasticsearch.helpers import bulk
es = Elasticsearch(hosts="localhost:9200")
index_name = "test_index"
try:
# 每次存入數(shù)據(jù)前,可以做個(gè)索引
# 是否存在的判斷,防止沖突。
es.indices.delete(index=index_name)
except:
pass
# 單條存入
es.index(index="test_index",
doc_type="post",
id=1,
body={
"這里是你的數(shù)據(jù)": "這里是你的數(shù)據(jù)"}
)
# 或者
es.indices.create(index=index_name,
body={
"這里是你的數(shù)據(jù)": "這里是你的數(shù)據(jù)"}
)
# 批量存儲(chǔ)
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條數(shù)據(jù)存一次。
if i % 10000 == 0:
bulk(es, bulk_data)
bulk_data = []
2.3 檢索數(shù)據(jù)
當(dāng)把數(shù)據(jù)存入ES之后,就是檢索了,不然存進(jìn)去不用,那就真的沒啥用了,是吧。檢索也比較簡(jiǎn)單,主要是要理清這里面的邏輯關(guān)系是,實(shí)在不懂就多試試。舉個(gè)栗子。
body = {
"query": {
"match": {
"title": {
"query": "中國(guó) "
}
}
}
}
es.search(index="test_index",
doc_type="post",
body=body)
ElasticSearch主要是用來做檢索的,你可以把它就理解為一個(gè)百度。所以熟練使用檢索數(shù)據(jù)是很重要的。檢索的時(shí)候,主要就是那個(gè)body里面寫的東西,里面的query,match,是關(guān)鍵字,這個(gè)不能修改,title是你存儲(chǔ)的時(shí)候定義的字段名字,然后“中國(guó)”是你要檢索的內(nèi)容。
看完上述內(nèi)容,你們掌握Elasticsearch怎么安裝及在Python中怎么使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
分享標(biāo)題:Elasticsearch怎么安裝及在Python中怎么使用
URL標(biāo)題:http://chinadenli.net/article8/jijcip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、靜態(tài)網(wǎng)站、Google、網(wǎng)站營(yíng)銷、關(guān)鍵詞優(yōu)化、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)