1、RESTful接口格式
ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口
URL的格式:http://localhost:9200/<index>/<type>/[<id>]
其中index、type是必須提供的。
id是可選的,不提供es會自動生成。
index、type將信息進行分層,利於管理。
index可以理解為數據庫;type理解為數據表;id相當於數據庫表中記錄的主鍵,是唯一的。
2、HTTP客戶端
操作REST API常用的有通過CRUL命令,Chrome Sense插件,httpie,kibana中的Dev Tools,head等,下面主要介紹CRUL命令、kibana中的Dev Tools工具和head
2.1、curl命令
curl命令相關用法參考:http://www.cnblogs.com/shaosks/p/7483322.html
創建一個索引庫

2.2、Dev Tools
GET _search
{
"query" : {
"match_all" : {}
}
}

2.3 head

3、索引文檔的創建
格式:http://127.0.0.1:9200/<index>/<type>/id
3.1、curl命令
windows下安裝的CURL有可能不支持單引號,如果有報錯,還請改成雙引號,內部使用轉義字符轉義。
例如:curl -XPUT http://localhost:9200/test1/es/1 -d "{\"first_name\":\"test1\"}"
添加-d參數,在后台以守護進程模式運行

索引名字是:test1;
索引的類型是:es;
本記錄的id是:1
3.2、Dev Tools

4、索引文檔的查詢
4.1、請求參數方式
curl 127.0.0.1:9200/fendo/_search?q=*

4.2、請求體方式(推薦這種方式)
windows下安裝的CURL有可能不支持單引號,如果有報錯,還請改成雙引號,內部使用轉義字符轉義。
curl -XPOST 127.0.0.1:9200/fendo/_search?pretty -d "{\"query\": { \"match_all\": {} }}"

根據索引時的ID查詢的文檔的RESTful接口如下
curl -XGET "http://127.0.0.1:9200/fendo/account/25" 或 curl -XGET http://127.0.0.1:9200/fendo/account/25 后面的雙引號可以不要

4.3、Dev Tools
GET /fendo/_search?pretty
{
"query": { "match_all": {} }
}
或
POST /fendo/_search?pretty
{
"query": { "match_all": {} }
}

4、索引文檔的更新
根據索引時的ID更新的文檔的內容其RESTful接口如下
curl -XPUT "http://localhost:9200/fendo/account/222" -d "{\"first_name\":\"fk\"}

查詢一下:curl -XGET http://127.0.0.1:9200/fendo/account/222

說明更新成功
5、索引文檔的刪除
根據索引時的ID更新的文檔的內容其RESTful接口如下
curl -XDELETE http://127.0.0.1:9200/fendo/account/222

刪除成功
6、通過樣例數據建立索引
6.1、下載樣例數據:accounts.zip
下載樣例數據集鏈接,解壓數據到指定目錄

6.2、創建一個索引庫:
curl -XPUT 127.0.0.1:9200/test_index

6.3、導入數據
相對路徑:curl -XPOST 127.0.0.1:9200/bank/account/_bulk?pretty --data-binary @accounts.json
accounts.json文件必須在elasticsearch-5.5.2\bin路徑下

注意:
1、 需要在accounts.json所在的目錄運行curl命令。
2、 127.0.0.1:9200是ES得訪問地址和端口
3、 bank是索引的名稱
4、 account是類型的名稱
5、 索引和類型的名稱在文件中如果有定義,可以省略;如果沒有則必須要指定
6、 _bulk是rest得命令,可以批量執行多個操作(操作是在json文件中定義的,原理可以參考之前的翻譯)
7、 pretty是將返回的信息以可讀的JSON形式返回。
如果文件accounts.json 在 example_data文件夾中,二example_data文件夾在當前運行命令目錄的前前一個目錄里面,即example_data和elasticsearch-5.5.2目錄是並列的,則命令格式如下:
curl -XPOST 127.0.0.1:9200/aaa/bbb/_bulk?pretty --data-binary "@..\..\example_data/accounts.json"
或 可以不要雙引號
curl -XPOST 127.0.0.1:9200/aaa/bbb/_bulk?pretty --data-binary @..\..\example_data/accounts.json
或
curl -XPOST 127.0.0.1:9200/aaa/bbb/_bulk?pretty --data-binary @..\..\example_data\accounts.json
注意命令格式中最后的/和\都可以
查看導入的aaa索引,
curl -XPOST 127.0.0.1:9200/aaa/_search?pretty -d "{\"query\": { \"match_all\": {} }}"

7、查看所有索引索引
curl localhost:9200/_cat/indices?v
或
curl "localhost:9200/_cat/indices?v"

8、查看集群狀態
curl 127.0.0.1:9200/_cat/health?v

127.0.0.1是主機的地址,9200是監聽的端口號,ES默認監聽的端口號就是9200.
這里需要注意的是,windows下安裝的CURL有可能不支持單引號,如果有報錯,還請改成雙引號,內部使用轉義字符轉義。
得到的相應結果。
可以看到集群的名字是默認的"elasticsearch",集群的狀態時"green"。這個顏色之前也有說過:
1 、綠色,最健康的狀態,代表所有的分片包括備份都可用
2 、黃色,基本的分片可用,但是備份不可用(也可能是沒有備份)
3 、紅色,部分的分片可用,表明分片有一部分損壞。此時執行查詢部分數據仍然可以查到,遇到這種情況,還是趕快解決比較好。
上面的結果還可以看到,目前有一個節點,但是沒有分片,這是因為我們的ES中還沒有數據,一次也就沒有分片。
當使用elasticsearch作為集群名字時,會使用單播,查詢本機上是否還運行着其他的節點。如果有,則組成一個集群。
(如果使用其他的名字作為集群名字,那么就可能采用多播了!這個在工作中,經常會遇到,大家使用的是一個集群名字,分片總是被搞在一起,導致有人的機器下線后,自己的也無法使用)
通過下面的命令,可以查詢節點的列表:
curl 127.0.0.1:9200/_cat/nodes?v

9、總結
總結上面涉及到的命令大致如下:
1、創建索引:curl -XPUT http://localhost:9200/test1/es/1 -d "{\"first_name\":\"test1\"}"
通過文件導入:curl -XPOST 127.0.0.1:9200/bank/account/_bulk?pretty --data-binary @accounts.json
2、查詢索引:curl -XPOST 127.0.0.1:9200/aaa/_search?pretty -d "{\"query\": { \"match_all\": {} }}"
curl -XGET 127.0.0.1:9200/aaa/_search?pretty -d "{\"query\": { \"match_all\": {} }}"
curl -XGET 127.0.0.1:9200/aaa/bbb/222
3、修改索引:curl -XPUT "http://localhost:9200/fendo/account/222" -d "{\"first_name\":\"fk\"}
4、刪除索引:curl -XDELETE http://127.0.0.1:9200/fendo/account/222
5、查看所有索引:curl localhost:9200/_cat/indices?v
