ElasticSearch使用指南

2020-06-03 00:00:00 查询 数据 搜索引擎 是一个 我爱

Abstract:

众所周知,Google和Baidu作为广为人知的搜索引擎,在人们的日常工作生活中,已经变成了不可或缺的一部分,不管我们查找一份专业的技术资料,寻求一次买车建议,抑或是了解某道川菜的做法,我们或多或少都会使用到搜索引擎。很多时候,当我们对一件事情没有答案,或者是没有主意的时候,可能首先想到的就是Google一下,或是咨询度娘,总之搜索引擎已经深入到了我们的工作生活当中,并且扮演着越来越重要的作用。基于此,各大互联网公司都对搜索这块大饼感兴趣。从Google到Baidu,从微软Ping到sougou, 从360到中国搜索。这些形形色色的产品无一不告诉我们,搜索是一个重要的市场,搜索是一块美味的蛋糕。 于过去来说,或许搜索引擎只掌握在这些大公司的手上,中小企业由于数据量较小,对于搜索的需求并不是那么迫切。可是随着互联网,移动互联网的发展,数据有了井喷式的暴涨,各大公司对于搜索的需求逐渐的上升,为了提高用户的体验,让海量的数据产生价值,不管是公司还是技术社区都为了有更好的搜索工具而发力,在此背景下产生了一批优良的闭、开源搜索引擎。

近年来,产生的比较有名的开源搜索引擎就有十几款,下面对这些搜索引擎做一个简单的介绍。


1. Lucence

Lucence是用Java写的,也是Java家族出名的搜索引擎之一,它提供了查询引擎和索引引擎,没有中文分词引擎,它不支持实时搜索。


2. Sphinx

Sphinx 是一个用C++语言写的开源的搜索引擎,Sphinx在索引上采取的是用空间换取事件的策略,其建立索引要比Lucence快, 支持实时搜索。


3. Nutch

Nutch是一个用Java实现的开源web搜索引擎,包括爬虫、索引引擎、查询引擎、其中Nutch是基于Lucence的,Lucence为Nutch提供文本索引和搜索的API。


4. solr

Solr是一个用java开发的独立的企业级搜索应用服务器,它提供了类似于Web-service的API接口,它是基于Lucece的全文搜索服务器,也算是Lucence的一个变种,很多一线互联网公司都在用Solr,是比较成熟的解决方案。


5. Elasticsearch

Elascticsearch是一个采用java语言开发的,基于Lucence构造的开源、分布式的搜索引擎,设计用于云计算中,能够达到实时搜索,稳定性可靠,数据模型是json。


在以上提高的几种搜索引擎中,目前出名的,被广泛使用的要数solr跟elasticsearch,而本文的主角就是其中之一的Elasticsearch,本文将从elasticsearch安装入门开始,让大家逐渐熟悉elasticsearch,熟悉其特性、使用场景,以及一些用法。

Elasticsearch 是一个现代化的、高速的、分布式的、可扩展的、 实时搜索与数据的开源分析引擎。它能够从项目已开始就赋予你的数据以搜索、分析和探索的能力,这是通常没有预料到的。它的存在还是因为原始数据如果只是躺在磁盘里面就根本毫无用处。

无论你是需要全文搜索,还是结构化数据的实时统计,Elasticsearch都能过满足你,当然Elasticsearch不仅仅只是全文搜索,它还包括结构化搜索、数据分析、复杂语言处理、地理位置和对象间关联关系等, 此外我们也可利用数据建模来充分利用Elasticsearch的水平伸缩性。

前面提到,Elasticsearch是一个开源的搜索引擎,建立在一个全文搜索引擎库Apache Lucene基础之上,Lucene可以说是当先先进、高性能、全功能的搜索引擎库--无论是开源还是私有。但是Lucene仅仅是一个库,为了更充分发挥其功能,你需要使用Java并将Lucene直接继承到应用程序中。更糟糕的是,其非常复杂,很难理解其工作原理。Elasticsearch也是用java编写,它的内部使用lucene做索引与搜索,但是它的目的是使全文检索变得简单,通过隐藏Lucene的复杂行,取而代之的提供一套简单一致的restful api。然而elasticsearch不仅仅是Lucene,并且也不仅仅只是一个全文搜索引擎。

  • 1. 一个分布式的实时文档存储,每个字段都可以被索引与搜索
  • 2. 一个分布式实时分析搜索引擎
  • 3. 能够胜任上百个服务节点的拓展,并支持PB级别的结构化和非结构化数据。

Elasticsearch将所有的功能打包成一个单独的服务,这样你可以通过程序与它提供的简单的restful api进行通信。鉴于我们紧紧是要了解ElasticSearch的特性,我们并没有特别大的数据量,所以在这里我们采用更加简单的方式,利用docker来练习使用elasticsearch。

一、 安装

编写如下的docker-compose.yaml文件
docker-compose.yaml 
-------------------------
version: "2"
services:
 elasticsearch:
   image: elasticsearch
   ports:
     - "9200:9200"

启动  dicker-compose up -d 
中文分词安装
进入docker
docker exec -it elasticsearch_1 bash  执行如下命令。
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.3/elasticsearch-analysis-ik-5.6.3.zip

配置完成之后重启
docker-compose restart 

相关文章