Elasticsearch学习笔记(一)

Elasticsearch是一个分布式可扩展的实时搜索和分析引擎。它能帮助你搜索、分析和浏览数据。

安装

  • 安装Java
  • 下载压缩包并解压
    1
    2
    3
    # elasticsearch属于开箱即用型的工具,解压完就能用
    curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.3.1/elasticsearch-2.3.1.zip
    unzip elasticsearch-2.3.1.zip

Elasticsearch官方提供了一些插件,比如Marvel(管理和监控工具),Sheild(权限管理工具),但是都是收费的。

运行

1
2
3
4
5
cd your/path/to/elasticsearch
# 不加任何参数的话,可以在终端看到输出信息
./bin/elasticsearch
# -d (--daemonize ) 后台运行
./bin/elasticsearch -d

测试

1
curl 'http://localhost:9200/?pretty'

返回信息

1
2
3
4
5
6
7
8
9
10
11
12
{
"name" : "Copperhead",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "2.3.0",
"build_hash" : "8371be8d5fe5df7fb9c0516c474d77b9feddd888",
"build_timestamp" : "2016-03-29T07:54:48Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0" # 基于lucene
},
"tagline" : "You Know, for Search"
}

集群和节点

节点(node)是一个运行着的Elasticsearch实例。集群(cluster)是一组具有相同cluster.name的节点的集合,他们协同工作,共享数据并提供故障转义和扩展功能。

为你的集群设置名字来代替默认值,防止一个新启动的节点加入到相同网络中另一个同名集群中。

打开Elasticsearch文件夹下config文件夹中的elasticsearch.yml文件,去掉cluster.name一行前的#(yaml文件的注释),冒号后面填上你的集群名字。

重启Elasticsearch。

关于重启,老版本的Elasticsearch可以用api接口来重启:

1
curl -XPOST 'http://localhost:9200/_shutdown'

我用的是版本2.3.1,这个接口已经废弃了,官方推荐通过kill pid的方法来重启:

1
2
3
./bin/elasticsearch -d -p pid
kill `cat pid`
./bin/elasticsearch -d # 启动

但是,我没成功,最后我通过lsof -i:9200找到pid,然后kill -9 pid重启。

在学习Elasticsearch的过程中会大量用到curl,具体可以google,推荐看阮一峰老师的curl网站开发指南官网

交互

JAVA API

不会JAVA,就不卖萌了。

􏱎基于HTTP协议􏰏􏱗,以JSON为􏰼􏰽􏲮􏲯􏳳􏰬􏰔数据交互格式的Restful API

其他语言可以通过这种形式与Elasticsearch交互。

向Elasticsearch发出请求的组成部分与其他普通的Restful请求一样:

1
curl -X<VERB> '<PROTOCAOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'

  • VERB: GET, POST, PUT, HEAD, DELETE
  • PROTOCAOL: http, https
  • HOST: 集群中任何一个节点的主机名
  • PORT: 端口,默认9200
  • PATH: API路径
  • QUERY_STRING: 请求参数
  • BODY: 请求主体

简单例子:

1
2
3
4
5
6
7
# 计算集群中文档的数量
curl -XGET 'http://localhost:9200/_count?pretty' -d '
{
"query": {
"match_all": {}
} }
'