ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

以上是百度百科对ES的介绍。本文主要记述在linux环境下安装Elasticsearch及基本的可视化工具sense,并使用ES索引MongoDB中的数据,使我们可以直接通过ES去检索数据库中的数据,使检索速度大大加快,并使用python去完成对ES的检索操作。

环境:ubuntu 14.04, elasticsearch 2.3.4, mongodb 3.2, python 2.7

1.安装ElasticSearch

首先官方文档要求Elasticsearch 至少安装有Java 7. 因此首先确定已经安装有JDK7或以上版本。

安装ElasticSearch非常简单,只需要去官方下载地址https://www.elastic.co/downloads/elasticsearch下载想要安装的版本即可,例如下载2.3.4版本,下载完毕后解压,接着进入bin目录下

 cd elasticsearch-2.3.4/bin

运行

./elasticsearch
接着打开浏览器,输入localhost:9200,如果出现以下信息则启动成功
{
"name" : "Tethlam",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.4",
"build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f",
"build_timestamp" : "2016-06-30T11:24:31Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}

2.安装kibana和sense

kibana是ES的可视化工具,功能强大,sense是kibana的一个插件,使用sense可以直接在浏览器里完成对ES的基本操作。
    首先安装kibana,安装方法与ES一样,首先下载想要的版本https://www.elastic.co/downloads/kibana,然后解压,进入bin目录,运行以下命令安装sense

 ./bin/kibana plugin --install elastic/sense
安装成功后运行 ./bin/kibana
打开浏览器,输入http://localhost:5601/app/sense即可进入sense 至此一个基本的ES环境就安装完成了

3.安装mongo-connector

接下来我们要使用ES去检索mongodb中的数据,这样首先需要用ES去同步存储在mongodb中数据,创建这些数据的索引。完成这一步工作需要使用的工具是mongo-connector,这是mongodb官方开发的一个非正式工具。

使用mongo-connector同步数据首先需要确保mongodb为副本集,这一步是必不可少的,因为ES是通过mongodb的oplog去建立索引,如果不是副本集就没有oplog,当然也就无法建立索引了,至于如何建立mongodb副本集请自行查阅mongodb文档。

可以使用pip直接安装mongo-connector:

 pip install mongo-connector

然后下载 https://github.com/mongodb-labs/elastic2-doc-manager,接着可以直接运行以下命令完成数据同步
mongo-connector -m localhost:27017 -t localhost:9200 -d elastic2_doc_manager
注意如果使用的ES为1.x版本需要下载 https://github.com/mongodb-labs/elastic-doc-manager并运行
mongo-connector -m localhost:27017 -t localhost:9200 -d elastic_doc_manager

其中-m之后的参数为数据库地址,-t之后为ES地址,这样就完成了同步

4.用python操作ES

最后我们要使用python操作ES,对此ES本身提供了python client,同样使用pip即可安装

 pip install elasticsearch

接着可以使用以下代码测试
from elasticsearch import Elasticsearch
es = Elasticsearch() # ignore 400 cause by IndexAlreadyExistsException when creating an index
es.indices.create(index='test-index', ignore=400) # ignore 404 and 400
es.indices.delete(index='test-index', ignore=[400, 404])

更多信息请参考官方文档

相关链接:ES官方文档https://www.elastic.co/guide/index.html

mongo-connector文档https://github.com/mongodb-labs/mongo-connector/wiki/Usage-with-ElasticSearch

Elasticsearch python client文档https://elasticsearch-py.readthedocs.io/en/master/api.html#elasticsearch

搭建ElasticSearch+MongoDB检索系统的更多相关文章

  1. 一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB) | 建议收藏

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  2. 用ElasticSearch,LogStash,Kibana搭建实时日志收集系统

    用ElasticSearch,LogStash,Kibana搭建实时日志收集系统 介绍 这套系统,logstash负责收集处理日志文件内容存储到elasticsearch搜索引擎数据库中.kibana ...

  3. 快速搭建应用服务日志收集系统(Filebeat + ElasticSearch + kibana)

    快速搭建应用服务日志收集系统(Filebeat + ElasticSearch + kibana) 概要说明 需求场景,系统环境是CentOS,多个应用部署在多台服务器上,平时查看应用日志及排查问题十 ...

  4. Docker搭建ElasticSearch+Redis+Logstash+Filebeat日志分析系统

    一.系统的基本架构 在以前的博客中有介绍过在物理机上搭建ELK日志分析系统,有兴趣的朋友可以看一看-------------->>链接戳我<<.这篇博客将介绍如何使用Docke ...

  5. 孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务

    孤荷凌寒自学python第六十一天在Fedora28版的linux系统上找搭建本地Mongodb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第七天.成功在本地搭建 ...

  6. 孤荷凌寒自学python第六十天在windows10上搭建本地Mongodb数据服务

     孤荷凌寒自学python第六十天在windows10上找搭建本地Mongodb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第六天.成功在本地搭建了windows ...

  7. 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群

    笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...

  8. (转)搭建Elasticsearch和kibana环境

    搭建Elasticsearch和kibana环境 作者:IT云清 原文:https://blog.csdn.net/weixin_39800144/article/details/81162002 1 ...

  9. centos7搭建EFK日志分析系统

    前言 EFK可能都不熟悉,实际上EFK是大名鼎鼎的日志系统ELK的一个变种 在没有分布式日志的时候,每次出问题了需要查询日志的时候,需要登录到Linux服务器,使用命令cat -n xxxx|grep ...

随机推荐

  1. Angular 4 学习笔记 从入门到实战 打造在线竞拍网站 基础知识 快速入门 个人感悟

    最近搞到手了一部Angular4的视频教程,这几天正好有时间变学了一下,可以用来做一些前后端分离的网站,也可以直接去打包web app. 环境&版本信息声明 运行ng -v @angular/ ...

  2. H5学习第三周

    今天主要总结弹性布局 flex使用 1.给父容器添加display flex/inline-flex;属性 2.父容器可以使用的属性值有 >>>flex-direction 属性决定 ...

  3. vue.js 组件之间传递数据

    前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用.如何传递数据也成了组件的重要知识点之一. 组件 组件与组件之间,还存在着不同的关 ...

  4. Complete

    complete为动画结束时的回调函数,在无限循环模式下(设置loop: true) 该回调函数将不会执行,但是有规定次数的循环模式下(比如设置设置loop: 3) 该回调函数 将只会在最后一次循环结 ...

  5. 进击的AssetBundles和它的工具们

    0x00 前言 周末的时候在家看了下去年的Unite16 LA的视频.其中一个session很有趣,是AssetBundles开发团队Reichert的一个"总结过往,畅想未来"的 ...

  6. Oracle中的游标的原理和使用详解

    游标的简介 逐行处理查询结果,以编程的方式访问数据. 游标的类型: 1,隐式游标:在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标,名字固定叫sql. 2,显式游标:显式游标用于处理 ...

  7. java用户界面窗口

    java用户界面窗口 窗口框 代码如下: package Day08; import java.awt.Color;import java.awt.FlowLayout;import java.awt ...

  8. Android 自定义 permission

    Android 自定义 permission Android 添加自定义权限 permission-tree 权限的根节点,3个成员都要定义 name 一般来说需要2个".":比如 ...

  9. SignalR在ASP.NET MVC中的应用

    一.简介 ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连接的客户端变得 ...

  10. Echarts关系图-力引导布局

    需要做一个树形图,可以查看各个人员的关系. 可伸缩的力引导图-失败 刚开始,打算做一个可展开和伸缩的,搜索时候发现CSDN有一篇美美哒程序媛写的Echarts Force力导向图实现节点可折叠. 这里 ...