在网上发现少有介绍Elasticsearch模块的中文博客,因此本人想系统的写一篇基于java-web项目的Elasticsearch的使用,在此跟大家一起探讨。
1.安装java
为了建立Elasticsearch,第一步是确保安装java SE环境。Elasticsearch需要java6或更高版本。
2.安装Elasticsearch
从http://ww.elasticsearch.org/download/下载,解压。选择最新的稳定版本,安装完毕。
与Elasticsearch交互的主要接口是基于http协议和REST的。这意味着你甚至可以使用Web浏览器来完成基本的查询和请求,但对于更负载的情况,你需要额外的命令行工具,比如cURL。如果你使用Linux或OS X命令,cURL已经可用了。如果你使用Windows,可以从http://curl.haxx.se/download.html下载。
3.目录布局
在Elasticsearch文件目录中。应该可以看到如下目录结构:
Elasticsearch启动会创建如下目录(如果目录不存在):
4.配置Elasticsearch
Elasticsearch很容易入门,这是它越来越流行的原因之一,当然,不是全部原因。因为已为简单的环境配置了合理的默认值和自动设置,我们可以跳过配置,不需改变我们的配置文件中的任意一行而继续进行。然而,为了真正理解Elasticsearch,学习一些可用的设置还是值得的。
现在来看下Elasticsearch的配置目录config,可以看到三个文件:elasticsearch.yml,jvm.options,log4j2.properties,第一个文件负责设置服务服务器的默认配置值。重要的是,因为一些配置值可以在运行时更改,也可作为集群状态的一部分被保留,所以这个文件中的值可能不准确。有两个值不能在运行时更改,分别是cluster.name和node.name。
cluster.name保存集群名字,不同的集群用名字来区分,配置成相同集群名字的各个节点形成一个集群。
node.name是实例(该节点)的名字,可以不定义此参数,这时,Elasticsearch自动选择一个唯一的名称。注意,此名称是每次启动时选择的,所以在每次重启后名称可能不一样。在很长的时间区间或者重启过后,需要在API中提及具体实例名称,或者用监控工具查看节点,自定义一个名称还是很有帮助的。给你的节点想一个描述性的名字把。
cluster.name保存集群名字,不同的集群用名字来区分,配置成相同集群名字的各个节点形成一个集群。
node.name是实例(该节点)的名字,可以不定义此参数,这时,Elasticsearch自动选择一个唯一的名称。注意,此名称是每次启动时选择的,所以在每次重启后名称可能不一样。在很长的时间区间或者重启过后,需要在API中提及具体实例名称,或者用监控工具查看节点,自定义一个名称还是很有帮助的。给你的节点想一个描述性的名字把。
记住:大多数在elasticsearch.yml文件中设置的参数都可以用Elasticsearch REST API来覆盖。8.8节将介绍这些API。
配置的一个重要部分是调整你的操作系统。在建立索引时,尤其是很多分片和副本的情况下,Elasticsearch将创建很多文件。所以系统不能限制打开的文件描述符小于32000个。在Linux上,一般在/etc/security/limits.conf中修改,当前的值可以用ulimit -n命令查看。如果达到极限,Elasticsearch将无法创建新的文件,所以合并会失败,索引会失败,新的索引无法创建。
下一组设定关联到单个Elasticsearch实例的Java虚拟机(JVM)的堆内存限制。对小型部署来说,默认的内存限制(1024M)就够了,但对于大型项目不够。如果你在日志文件中发现OutOfMemoryError异常的条目,把ES_HEAP_SIZE变量设置到大于1024。
5.运行Elasticsearch
运行刚刚下载并解压的ZIP包,转到bin目录,然后根据不同的操作系统,运行如下命令。
linux或OS X:./elasticsearch
Windows:elasticsearch.bat。
现在Elasticsearch已经启动并运行起来了。它在工作时一般使用2个端口号:第1个是使用HTTP协议与REST API通信的端口,第2个是传输模块(transport module),是用来在集群内以及Java客户端和集群之间通信的端口。HTTP API的默认端口号是9200,所以可以在浏览器中打开http:127.0.0.1:9200来检查搜索是否就绪,浏览器将显示类似下面的代码片段:
输出是json结构的。
ElasticSearch的javaAPI官方网址:
https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html