ES(elasticsearch)搜索引擎安装和使用

ElasticSearch安装

由于本人的操作系统是deepin的liunx系统, 所以本博主发一下Linux安装步骤。

1.简介

Elasticsearch简介*

Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。

它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。

Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。

但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂。

Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。

当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作:

  • 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

  • 实时分析的分布式搜索引擎。

  • 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与ES的RESTful API进行交流。

Elasticsearch的上手是非常简单的。它附带了很多非常合理的默认值,这让初学者很好地避免一上手就要面对复杂的理论,

它安装好了就可以使用了,用很小的学习成本就可以变得很有生产力。

随着越学越深入,还可以利用Elasticsearch更多高级的功能,整个引擎可以很灵活地进行配置。可以根据自身需求来定制属于自己的Elasticsearch。

使用案例:

  • 维基百科使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type、did-you-mean等搜索建议功能。

  • 英国卫报使用Elasticsearch来处理访客日志,以便能将公众对不同文章的反应实时地反馈给各位编辑。

  • StackOverflow将全文搜索与地理位置和相关信息进行结合,以提供more-like-this相关问题的展现。

  • GitHub使用Elasticsearch来检索超过1300亿行代码。

  • 每天,Goldman Sachs使用它来处理5TB数据的索引,还有很多投行使用它来分析股票市场的变动。

但是Elasticsearch并不只是面向大型企业的,它还帮助了很多类似DataDog以及Klout的创业公司进行了功能的扩展。

Elasticsearch的优缺点**:

优点

  1. Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
  2. Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
  3. 处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。
  4. Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
  5. 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。

缺点

  1. 只有一名开发者(当前Elasticsearch GitHub组织已经不只如此,已经有了相当活跃的维护者)
  2. 还不够自动(不适合当前新的Index Warmup API)

参考https://www.cnblogs.com/chowmin/articles/4629220.html

弹性堆栈的核心

Elasticsearch是一个分布式RESTful搜索和分析引擎,能够解决越来越多的用例。作为Elastic Stack的核心,它集中存储您的数据,以便您可以发现预期并发现意外情况。

您与数据的关系会发生变化。你可以负担得起迭代并覆盖更多的基础。

ElasticSearch已经实现了带有限状态传感器的反向索引用于全文查询,用于存储数字和地理数据的BKD树以及用于分析的列存储。

由于所有内容都已编入索引,因此在使用时永远不会留下索引冲突。您可以以极其惊人的速度利用和访问所有数据。

使用强大的功能扩展Elasticsearch

向群集添加用户名和密码,监控Elasticsearch的执行方式,运行机器学习作业以检测异常,以及X-Pack中功能

X-Pack可轻松安装到Elasticsearch中,为您提供安全,监控,警报,报告,图形探索和机器学习功能的增强体验。

Elasticsearch-head 以及 bigdesk

 

2.下载

名称 版本 下载地址
elasticsearch 1.7.3 elasticsearch-1.7.3.tar.gz

下载后,放到你的目录下并解压. 因为我们要配置包含三个节点的集群,可以先将其重命名为elasticsearch-node1。比如我的是 /home/hushuai/elasticsearch/elasticsearch-node1

3.修改配置文件
打开/home/hushuai/elasticsearch/config/ 目录下的elasticsearch.yml 文件 ,修改以下属性值并取消该行的注释:

cluster.name: elasticsearch #这是集群名字,起名为 elasticsearch。es启动后会将具有相同集群名字的节点放到一个集群下。

node.name: "es-node1" #节点名字

covery.zen.minimum_master_nodes: 2   
#指定集群中的节点中有几个有master资格的节点。对于大集群可以写3个以上。

discovery.zen.ping.timeout: 40s
#默认是3s,这是设置集群中自动发现其它节点时ping连接超时时间,为避免因为网络差而导致启动报错,我设成了40s。

discovery.zen.ping.multicast.enabled: false
#设置是否打开多播发现节点。

network.bind_host: 127.0.0.1
#设置绑定的ip地址,这是我的master的IP。

network.publish_host: 127.0.0.1
#设置其他节点和该节点交互的IP地址

network.host: 127.0.0.1
#同时设置bind_host和publish_host上面两个参数

discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300", "127.0.0.1:9301","127.0.0.1:9302"]
#discovery.zen.ping.unicast.hosts:["节点1的 ip","节点2 的ip","节点3的ip"]

#指明集群中其他可能为master的节点ip,以防es启动后发现不了集群中的其他节点。第一对引号里是node1,默认端口是9300.第二个是node2,端口号是9301。第三个引号里是node3,端口号为9302​​​​​

进一步修改 
拷贝 elasticsearch-node1 整个文件夹,两份,一份elasticsearch-node2,一份elasticsearch-node3. 

 

/home/hushuai/elasticsearch/config/elasticsearch.yml 文件修改如下:

node.name: "es-node2"

transport.tcp.port: 9301

http.port: 9201

 

node.name: "es-node3"

transport.tcp.port: 9302

http.port: 9202

因为是在一台机器在实现的集群,只要端口不被占用就可以。

如果想真的放的多台机器上,只需要根据我的配置修改端口即可。

 

运行 & 关闭 elasticsearch

1.运行elasticsearch :

编辑 /home/hushuai/elasticsearch/bin/elasticsearch.in.sh, 设置 ES_MIN_MEM和ES_MAX_MEM,确保二者数值一致。

若想让es后台运行,则

./elasticsearch -Xms512m -Xmx512m

2.关闭elasticsearch:

来关闭整个集群,通过:

curl -X POST http://主机IP:9200/_cluster/nodes/节点标识符(如es-node1)/_shutdown

 

安装相关组件:

BigDesk Plugin : 弹性搜索集群的实时图表和统计数据。http://bigdesk.org/
Elasticsearch Head Plugin: elasticsearch-head是一个用于浏览和与弹性搜索集群交互的Web前端。

http://mobz.github.io/elasticsearch-head/

 

1.安装head插件

进入到节点elasticsearch-node1/bin路径,并安装插件。

./plugin -install mobz/elasticsearch-head

2. 安装bigdesk

./plugin -install lukas-vlcek/bigdesk

打开head浏览,浏览器输入http://127.0.0.1:9200/_plugin/head/

特别注意:粗框的是主分片,细框的是备份分片。

接下里,我们需要根据官方的https://www.oschina.net/translate/elasticsearch-getting-started?cmp来插入数据

curl -XPUT 'http://127.0.0.1:9200/dept/employee/1' -d '{ "empname": "emp1"}'  

curl -XPUT 'http://127.0.0.1:9200/dept/employee/2' -d '{ "empname": "emp2"}'  

curl -XPUT 'http://127.0.0.1:9200/dept/employee/3' -d '{ "empname": "emp3"}'  

...

搜索 XXX 的文档, 查询条件 #是区分保存数据最开始分类。

在查看以上的搜索的文档里的内容,以dept为例子。

可直接在ES对应的IP:port后加文档的名字获取所有结果,例如   http://127.0.0.1:9200/dept

本人Java出身,而ES是由Java编写,并且在数据量越来越大时,几乎对性能没有影响,所以相比于solr,对ES更情有独钟。

 

相关链接:

https://www.elastic.co/products/elasticsearch

https://www.oschina.net/translate/elasticsearch-getting-started?cmp

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章