安装ElasticSearch搜索工具并配置Python驱动的方法


Posted in Python onDecember 22, 2015

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们希望有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP的索引数据,我们希望我们的搜索服务器始终可用,我们希望能够一台开始并扩展到数百,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。Elasticsearch旨在解决所有这些问题和更多的问题。
Elasticsearch 是开源搜索平台的新成员,实时数据分析的神器,发展迅猛,基于 Lucene、RESTful、分布式、面向云计算设计、实时搜索、全文搜索、稳定、高可靠、可扩展、安装+使用方便,介绍都说的很好听,好不好用拿出来遛一遛。
做了个简单测试,在两台完全一样的虚拟机上,2000万条左右数据,Elasticsearch 插入数据速度比 MongoDB 慢很多(可以忍受),但是搜索/查询速度快10倍以上,这只是单机情况,多机集群情况下 Elasticsearch 表现更好一些。以下安装步骤在 Ubuntu Server 14.04 LTS 上完成。

安装 Elasticsearch
升级系统后安装 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

加入到系统启动文件并启动 elasticsearch 服务,用 curl 测试一下安装是否成功:

$ 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 的集群和数据管理界面 Marvel 非常赞,可惜只对开发环境免费,如果这个工具也免费就无敌了,安装很简单,完成后重启服务访问 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 ]

安装ElasticSearch搜索工具并配置Python驱动的方法

安装 Python 客户端驱动
和 MongoDB 一样,我们一般用程序和 Elasticsearch 交互,Elasticsearch 也支持多种语言的客户端驱动,这里仅安装 Python 驱动,其他语言可以参考官方文档。

$ sudo apt-get install python-pip
$ sudo pip install elasticsearch

写个简单程序把 gene_info.txt 的数据导入到 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 是一个功能强大的数据显示客户端,通过插件方式和 Elasticsearch 集成在一起,安装很容易,下载解压就可以了,然后重启 Elasticsearch 服务访问 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

安装ElasticSearch搜索工具并配置Python驱动的方法

Python 相关文章推荐
跟老齐学Python之编写类之四再论继承
Oct 11 Python
Python中super关键字用法实例分析
May 28 Python
使用Python求解最大公约数的实现方法
Aug 20 Python
python 调用win32pai 操作cmd的方法
May 28 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
python ftp 按目录结构上传下载的实现代码
Sep 12 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
python jenkins 打包构建代码的示例代码
Nov 29 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
python deque模块简单使用代码实例
Mar 12 Python
Python操作MySQL数据库的示例代码
Jul 13 Python
python 图像增强算法实现详解
Jan 24 Python
Python生成随机验证码的两种方法
Dec 22 #Python
基于python实现微信模板消息
Dec 21 #Python
python如何实现远程控制电脑(结合微信)
Dec 21 #Python
python从入门到精通(DAY 3)
Dec 20 #Python
python从入门到精通(DAY 2)
Dec 20 #Python
利用python代码写的12306订票代码
Dec 20 #Python
python从入门到精通(DAY 1)
Dec 20 #Python
You might like
社区(php&&mysql)五
2006/10/09 PHP
APMServ使用说明
2006/10/23 PHP
PHP循环结构实例讲解
2014/02/10 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
用JQuery 实现的自定义对话框
2007/03/24 Javascript
JavaScript Archive Network 集合
2007/05/12 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
js的onload事件及初始化按钮事件示例代码
2013/09/25 Javascript
JS正则表达式大全(整理详细且实用)
2013/11/14 Javascript
谷歌地图打不开的解决办法
2014/08/07 Javascript
JS中实现简单Formatter函数示例代码
2014/08/19 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
NodeJs实现简易WEB上传下载服务器
2019/08/10 NodeJs
layer实现弹出层自动调节位置
2019/09/05 Javascript
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Python基本socket通信控制操作示例
2019/01/30 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
python二维图制作的实例代码
2020/12/03 Python
css3实现信纸/同学录效果的示例代码
2018/12/11 HTML / CSS
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
日语专业个人求职信范文
2014/02/02 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
庆六一开幕词
2015/01/29 职场文书
pytorch 实现在测试的时候启用dropout
2021/05/27 Python