安裝ElasticSearch搜索工具并配置Python驅(qū)動(dòng)的方法
ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶(hù)能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開(kāi)發(fā)的,并作為Apache許可條款下的開(kāi)放源碼發(fā)布,是第二流行的企業(yè)搜索引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索,穩(wěn)定,可靠,快速,安裝使用方便。
我們建立一個(gè)網(wǎng)站或應(yīng)用程序,并要添加搜索功能,令我們受打擊的是:搜索工作是很難的。我們希望我們的搜索解決方案要快,我們希望有一個(gè)零配置和一個(gè)完全免費(fèi)的搜索模式,我們希望能夠簡(jiǎn)單地使用JSON通過(guò)HTTP的索引數(shù)據(jù),我們希望我們的搜索服務(wù)器始終可用,我們希望能夠一臺(tái)開(kāi)始并擴(kuò)展到數(shù)百,我們要實(shí)時(shí)搜索,我們要簡(jiǎn)單的多租戶(hù),我們希望建立一個(gè)云的解決方案。Elasticsearch旨在解決所有這些問(wèn)題和更多的問(wèn)題。
Elasticsearch 是開(kāi)源搜索平臺(tái)的新成員,實(shí)時(shí)數(shù)據(jù)分析的神器,發(fā)展迅猛,基于 Lucene、RESTful、分布式、面向云計(jì)算設(shè)計(jì)、實(shí)時(shí)搜索、全文搜索、穩(wěn)定、高可靠、可擴(kuò)展、安裝+使用方便,介紹都說(shuō)的很好聽(tīng),好不好用拿出來(lái)遛一遛。
做了個(gè)簡(jiǎn)單測(cè)試,在兩臺(tái)完全一樣的虛擬機(jī)上,2000萬(wàn)條左右數(shù)據(jù),Elasticsearch 插入數(shù)據(jù)速度比 MongoDB 慢很多(可以忍受),但是搜索/查詢(xún)速度快10倍以上,這只是單機(jī)情況,多機(jī)集群情況下 Elasticsearch 表現(xiàn)更好一些。以下安裝步驟在 Ubuntu Server 14.04 LTS 上完成。
安裝 Elasticsearch
升級(jí)系統(tǒng)后安裝 Oracle Java 7,既然 Elasticsearch 官方推薦使用 Oracle JDK 7 就不要嘗試 JDK 8 和 OpenJDK 了:
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java7-installer
加入 Elasticsearch 官方源后安裝 elasticsearch:
$ wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | apt-key add - $ sudo echo "deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main" >> /etc/apt/sources.list $ sudo apt-get update $ sudo apt-get install elasticsearch
加入到系統(tǒng)啟動(dòng)文件并啟動(dòng) elasticsearch 服務(wù),用 curl 測(cè)試一下安裝是否成功:
$ sudo update-rc.d elasticsearch defaults 95 1 $ sudo /etc/init.d/elasticsearch start $ curl -X GET 'http://localhost:9200' { "status" : 200, "name" : "Fer-de-Lance", "version" : { "number" : "1.1.1", "build_hash" : "f1585f096d3f3985e73456debdc1a0745f512bbc", "build_timestamp" : "2014-04-16T14:27:12Z", "build_snapshot" : false, "lucene_version" : "4.7" }, "tagline" : "You Know, for Search" }
Elasticsearch 的集群和數(shù)據(jù)管理界面 Marvel 非常贊,可惜只對(duì)開(kāi)發(fā)環(huán)境免費(fèi),如果這個(gè)工具也免費(fèi)就無(wú)敵了,安裝很簡(jiǎn)單,完成后重啟服務(wù)訪(fǎng)問(wèn) http://192.168.2.172:9200/_plugin/marvel/ 就可以看到界面:
$ sudo /usr/share/elasticsearch/bin/plugin -i elasticsearch/marvel/latest $ sudo /etc/init.d/elasticsearch restart * Stopping Elasticsearch Server [ OK ] * Starting Elasticsearch Server [ OK ]
安裝 Python 客戶(hù)端驅(qū)動(dòng)
和 MongoDB 一樣,我們一般用程序和 Elasticsearch 交互,Elasticsearch 也支持多種語(yǔ)言的客戶(hù)端驅(qū)動(dòng),這里僅安裝 Python 驅(qū)動(dòng),其他語(yǔ)言可以參考官方文檔。
$ sudo apt-get install python-pip $ sudo pip install elasticsearch
寫(xiě)個(gè)簡(jiǎn)單程序把 gene_info.txt 的數(shù)據(jù)導(dǎo)入到 Elasticsearch:
#!/usr/bin/python # -*- coding: UTF-8 -*- import os, os.path, sys, re import csv, time, string from datetime import datetime from elasticsearch import Elasticsearch def import_to_db(): data = csv.reader(open('gene_info.txt', 'rb'), delimiter='\t') data.next() es = Elasticsearch() for row in data: doc = { 'tax_id': row[0], 'GeneID': row[1], 'Symbol': row[2], 'LocusTag': row[3], 'Synonyms': row[4], 'dbXrefs': row[5], 'chromosome': row[6], 'map_location': row[7], 'description': row[8], 'type_of_gene': row[9], 'Symbol_from_nomenclature_authority': row[10], 'Full_name_from_nomenclature_authority': row[11], 'Nomenclature_status': row[12], 'Other_designations': row[13], 'Modification_date': row[14] } res = es.index(index="gene", doc_type='gene_info', body=doc) def main(): import_to_db() if __name__ == "__main__": main()
Kibana 是一個(gè)功能強(qiáng)大的數(shù)據(jù)顯示客戶(hù)端,通過(guò)插件方式和 Elasticsearch 集成在一起,安裝很容易,下載解壓就可以了,然后重啟 Elasticsearch 服務(wù)訪(fǎng)問(wèn) http://192.168.2.172:9200/_plugin/kibana/ 就能看到界面:
$ wget https://download.elasticsearch.org/kibana/kibana/kibana-3.0.1.tar.gz $ tar zxvf kibana-3.0.1.tar.gz $ sudo mv kibana-3.0.1 /usr/share/elasticsearch/plugins/_site $ sudo /etc/init.d/elasticsearch restart
相關(guān)文章
matplotlib之pyplot模塊添加文本、注解(text和annotate)
matplotlib是python最著名的繪圖庫(kù),它提供了一整套和matlab相似的命令A(yù)PI,十分適合交互式地行制圖,下面這篇文章主要給大家介紹了關(guān)于matplotlib之pyplot模塊添加文本、注解(text和annotate)的相關(guān)資料,需要的朋友可以參考下2022-05-05Pytest+Request+Allure+Jenkins實(shí)現(xiàn)接口自動(dòng)化
這篇文章介紹了Pytest+Request+Allure+Jenkins實(shí)現(xiàn)接口自動(dòng)化的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06CentOS 7 安裝python3.7.1的方法及注意事項(xiàng)
這篇文章主要介紹了CentOS 7 安裝python3.7.1的方法,文中給大家提到了注意事項(xiàng),需要的朋友可以參考下2018-11-11Python求正態(tài)分布曲線(xiàn)下面積實(shí)例
今天小編就為大家分享一篇Python求正態(tài)分布曲線(xiàn)下面積實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11RuntimeError:CUDA?out?of?memory多種場(chǎng)景下的解決方案
若遇到RuntimeError:?CUDA?out?of?memory錯(cuò)誤,通常意味著GPU內(nèi)存不足以處理當(dāng)前的計(jì)算需求,本文就來(lái)介紹一下多種場(chǎng)景下的解決方案,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02Python實(shí)現(xiàn)的將文件每一列寫(xiě)入列表功能示例【測(cè)試可用】
這篇文章主要介紹了Python實(shí)現(xiàn)的將文件每一列寫(xiě)入列表功能,涉及Python文件讀取、遍歷、序列追加、賦值等相關(guān)操作技巧,需要的朋友可以參考下2018-03-03