运行ElasticSearch(Running ElasticSearch)
让我们运行我们的第一个实例。转到bin目录并从命令行运行以下命令:
./elasticsearch –f (Linux or OS X)
elasticsearch.bat –f (Windows)
- f选项告诉ElasticSearch程序不应该脱离控制台,应该运行在前台。这让我们看到程序生成的诊断消息并通过按下Ctrl + C来停止它。另一个选项是- p,这告诉ElasticSearch进程标识符应该通过这个参数指出写入的文件。这可以通过使用额外的监控软件或管理员来执行脚本。
祝贺 您,我们现在有ElasticSearch实例启动并运行!在其工作期间,服务器通常使用两个端口号:一个用于通过HTTP协议与REST API通信,第二个用于传输模块在集群中通信。HTTP API的默认端口是9200,所以我们可以通过web浏览器指向http://127.0.0.1:9200来检查搜索准备。浏览器应该显示类似于下面的 代码片段:
{
"ok" : true,
"status" : 200,
"name" : "Donald Pierce",
"version" : {
"number" : "0.20.0"
},
"tagline" : "You Know, for Search"
}
输出结构作为JSON(JavaScript对象表示法)对象。我们将在更复杂的请求中使用这种表示法。如果您不熟悉JSON,请花一分钟,读这篇文章:http://en.wikipedia.org/wiki/JSON。
注意:
ElasticSearch是聪明的。如果默认端口不可用,引擎绑定到下一个*的端口。您能在控制台上找到这个信息,在启动的时候:
[2012-09-02 22:45:17,101][INFO ][http] [Red Lotus] bound_address
{inet[/0:0:0:0:0:0:0:0%0:9200]}, publish_address
{inet[/192.168.1.101:9200]}
注意【http】的片段。ElasticSearch对各种任务使用一些端口。我们正在使用的接口,是由HTTP模块提供的。
现在我们使用CURL程序。例如,我们的查询可以执行如下:
curl –XGET http://127.0.0.1:9200/_cluster/health?pretty
-X参数是请求方法。默认值是GET(所以,在这个例子中,我们可以忽略这个参数)。现在不要担心GET值,我们将在本章后面更详细的描述它。
注意?pretty参数。作为一个标准,API返回的JSON对象的信息省略了换行。这个参数强制ElasticSearch添加一个换行字符到响应中,使响应更人性化。您可以试着运行前面的查询,看看有?pretty参数和没有?pretty参数的参异。
ElasticSearch在中小型应用中非常有用,但是它着眼于建立大规模应用。所以现在我们将建立我们的大型应用,双机集群。解压ElasticSearch归档在不同的目录并运行第二个实例。如果我们看看日志,我们看到类似以下:
[2012-09-09 11:23:05,604][INFO ][cluster.service ]
[Orbit] detected_master [Bova][fo2dHTS3TlWKlJiDnQOKAg]
[inet[/192.168.1.101:9300]],
added {[Bova][fo2dHTS3TlWKlJiDnQOKAg][inet[/192.168.1.101:9300]],},
reason: zen-disco-receive(from master [[Bova]
[fo2dHTS3TlWKlJiDnQOKAg][inet[/192.168.1.101:9300]]])
这意味着我们的第二个实例(名为Orbit)发现之前运行的实例(名为Bova)。ElasticSearch自动形成一个新的双节点集群。