安装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中实现常量(Const)功能
Jan 28 Python
Python中处理时间的几种方法小结
Apr 09 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
python之Socket网络编程详解
Sep 29 Python
Python实现PS图像抽象画风效果的方法
Jan 23 Python
python实现屏保计时器的示例代码
Aug 08 Python
python处理大日志文件
Jul 23 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
python实现七段数码管和倒计时效果
Nov 23 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
python Pexpect模块的使用
Dec 25 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代码技巧的小结
2013/06/02 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
Yii框架获取当前controlle和action对应id的方法
2014/12/03 PHP
php生成唯一的订单函数分享
2015/02/02 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
Joomla语言翻译类Jtext用法分析
2016/05/05 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
2013/09/24 Javascript
js hover 定时器(实例代码)
2013/11/12 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
Python程序中的观察者模式结构编写示例
2016/05/27 Python
Python3一行代码实现图片文字识别的示例
2018/01/15 Python
tensorflow 加载部分变量的实例讲解
2018/07/27 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
苹果台湾官网:Apple台湾
2019/01/05 全球购物
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
化工工艺专业求职信
2013/09/22 职场文书
致200米运动员广播稿
2014/02/06 职场文书
公司副总经理任命书
2014/06/05 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
邀请书格式范文
2015/02/02 职场文书
2015高考寄语集锦
2015/02/27 职场文书
酒店宣传语大全
2015/07/13 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP