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的优缺点**:
优点
- Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
- Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
- 处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。
- Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
- 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点
- 只有一名开发者(当前Elasticsearch GitHub组织已经不只如此,已经有了相当活跃的维护者)
- 还不够自动(不适合当前新的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/
进入到节点elasticsearch-node1/bin路径,并安装插件。
./plugin -install mobz/elasticsearch-head
./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