1. 程式人生 > >elasticsearch基礎操作02

elasticsearch基礎操作02

curl api

安裝ES集群

準備三臺機器:
192.168.1.10
192.168.1.11
192.168.1.12
三臺機器分別部署elasticsearch
部署前,應該先檢查機器是否有安裝jdk,如果沒有請先安裝JDK,三臺機器時間同步

安裝方式非常簡單,不會的請參考官方文檔,下面我以elasticsearch-1.7.2來示例

rpm -ivh elasticsearch-1.7.2.noarch.rpm

安裝完成修改配置文件:

vim /etc/elasticsearch/elasticsearch.yml 
cluster.name: myes
node.name: "linux-node1"  #這裏每臺機器寫對應的名字

修改此兩項即可,保存退出,並啟動

/etc/init.d/elasticsearch start


驗證elasticsearch是否啟動成功:

(1)ss -tanl 查看9200、9300端口是否開啟

(2)使用curl命令
# curl -XGET 'http://192.168.1.10:9200'
{
  "status" : 200,
  "name" : "linux-node1",
  "cluster_name" : "myes",
  "version" : {
    "number" : "1.7.2",
    "build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec",
    "build_timestamp" : "2015-09-14T09:49:53Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}

顯示"You Know, for Search"說明啟動成功啦!

(3)也可以使用瀏覽器測試
輸入"
和curl命令結果應該是一樣的

ES的插件plugins:

  • 插件擴展ES的功能:

    • 添加自定義的映射類型、自定義分析器、本地腳本、自定義發現方式;

  • 安裝方式:

    • 1).直接將插件解壓放置於plugins目錄中即可

      • /usr/share/elasticsearch/plugins

    • 2).使用plugins腳本安裝

      • /usr/share/elasticsearch/bin/plugin

      • -h : 幫助

      • -l : 列出已安裝的插件

      • -i,--install: 後面跟插件名

      • -r,--remove : 卸載

  • 示例:

以192.168.1.10這臺機器為主節點,比如我將網上下載的插件放置於/root/目錄下,常用的幾個插件kopf,head,bigdes,marvel

/usr/share/elasticsearch/bin/plugin -i marvel -u  
/usr/share/elasticsearch/bin/plugin -i bigdesk -u  
/usr/share/elasticsearch/bin/plugin -i kopf -u  
/usr/share/elasticsearch/bin/plugin -i head -u  

[root@linux-node1 ~]# /usr/share/elasticsearch/bin/plugin -l
Installed plugins:
    - head
    - kopf
    - bigdesk
    - marvel 
    
 查看我們安裝好的插件

瀏覽器輸入"http://192.168.1.10:9200/_plugin/head"回車;

技術分享圖片

只需要更改_plugin/{bigdesk|kopf|marvel}即可,就不一一貼圖了;



CURL操作相關的API:


_cat API:

查看幫助相關:
[root@linux-node1 ~]# curl -XGET '192.168.1.10:9200/_cat/?help'
=^.^=
/_cat/allocation
/_cat/shards
/_cat/shards/{index}
/_cat/master
/_cat/nodes
/_cat/indices
/_cat/indices/{index}
/_cat/segments
/_cat/segments/{index}
/_cat/count
/_cat/count/{index}
/_cat/recovery
/_cat/recovery/{index}
/_cat/health
/_cat/pending_tasks
/_cat/aliases
/_cat/aliases/{alias}
/_cat/thread_pool
/_cat/plugins
/_cat/fielddata
/_cat/fielddata/{fields}

查看nodes相關:
[root@linux-node1 ~]# curl -XGET '192.168.1.10:9200/_cat/nodes'
localhost 127.0.0.1 8 29 0.00 d m linux-node2 
localhost 127.0.0.1 4 16 0.00 d * linux-node1 
localhost 127.0.0.1 3 29 0.00 d m linux-node3 

後面加?v,會更詳細:
[root@linux-node1 ~]# curl -XGET '192.168.1.10:9200/_cat/nodes?v'
host      ip        heap.percent ram.percent load node.role master name        
localhost 127.0.0.1            8          29 0.00 d         m      linux-node2 
localhost 127.0.0.1            4          16 0.00 d         *      linux-node1 
localhost 127.0.0.1            3          29 0.00 d         m      linux-node3 


還可以自定義:
[root@linux-node1 ~]# curl -XGET '192.168.1.10:9200/_cat/nodes?h=name,ip,port,uptime,heap,current'
linux-node2 127.0.0.1 9300 37.1m 
linux-node1 127.0.0.1 9300 37.8m 
linux-node3 127.0.0.1 9300 10.5m


_cluster API:

[root@linux-node1 ~]# curl -XGET 'http://192.168.1.12:9200/_cluster/health'
[root@linux-node1 ~]# curl -XGET 'http://192.168.1.12:9200/_cluster/health?v'
[root@linux-node1 ~]# curl -XGET 'http://192.168.1.10:9200/_cluster/health?pretty'
		
[root@linux-node1 ~]# curl -XGET 'http://192.168.1.10:9200/_cluster/state/nodes?pretty'

[root@linux-node1 ~]# curl -XGET 'http://192.168.1.10:9200/_cluster/stats?pretty'

curl -XGET 'http://192.168.1.10:9200/_nodes/stats?pretty'

看字面意思就能明白查看的是什麽,結果就不一一貼圖了......



下面看一下文檔相關的


創建文檔:

[root@linux-node1 ~]# curl -XPUT 'http://192.168.1.10:9200/students/class1/1?pretty' -d '
> {
> "first_name":"Jing",
> "laste_name":"Guo",
> "Gender":"Male",
> "Age":25,
> "courses":"Xianglong Shiba Zhang"
> }'


[root@linux-node1 ~]# curl -XPUT 'http://192.168.1.10:9200/students/class1/2?pretty' -d '
{
"first_name":"Rong",
"laste_name":"Huang",
"Gender":"Female",
"Age":23,
"courses":"Luoying Shenjian"
}' 

創建第二個文檔時,註意看class1/2?pretty千萬別和第一個重復了,不然就把第一個覆蓋了

獲取文檔:

[root@linux-node1 ~]# curl -XGET 'http://192.168.1.10:9200/students/class1/1?pretty'
{
  "_index" : "students",
  "_type" : "class1",
  "_id" : "1",
  "_version" : 2,
  "found" : true,
  "_source":
{
"first_name":"Rong",
"laste_name":"Huang",
"Gender":"Female",
"Age":23,
"courses":"Luoying Shenjian"
}
}

更新文檔:

PUT方法會覆蓋原有文檔;

如果只更新部分內容,得使用_update API:

[root@linux-node1 ~]# curl -XPOST 'http://192.168.1.10:9200/students/class1/1/_update?pretty' -d '
> {
> "doc":{"age":22}
> }'
{
  "_index" : "students",
  "_type" : "class1",
  "_id" : "1",
  "_version" : 3
}

再次獲取,age已經改成22了:
[root@linux-node1 ~]# curl -XGET 'http://192.168.1.10:9200/students/class1/1?pretty'
{
  "_index" : "students",
  "_type" : "class1",
  "_id" : "1",
  "_version" : 3,
  "found" : true,
  "_source":{"first_name":"Rong","laste_name":"Huang","Gender":"Female","Age":23,"courses":"Luoying Shenjian","age":22}
}


刪除文檔:

操作不可逆,慎操作:

[root@linux-node1 ~]# curl -XDELETE 'http://192.168.1.10:9200/students/class1/1'


刪除索引:

[root@linux-node1 ~]# curl -XDELETE 'localhost:9200/students'

查看索引:

[root@linux-node1 ~]# curl -XGET 'localhost:9200/_cat/indices?v'


elasticsearch基礎操作02