ElasticSearch 命令-(基础篇)

ElasticSearch的命令调用是基于http的,提供了丰富的RESTFul API,从功能上来分可以分为4类:

(1)检查集群、节点、索引等状态信息;
(2)
管理集群、节点、索引数据及元数据;关。
(3)
执行CRUD操作及搜索操作;
(4)
执行高级搜索操作,例如pagingfilteringscriptingfacetingaggregations及其它操作;

 

集群、节点、索引等状态信息的查看命令:

查看健康情况 curl‘localhost:9200/_cat/health?v’

颜色代表状态:红黄绿;Node是节点个数;Shards是分片个数;Pri是分片中主分片的个数

查看索引 curl ‘localhost:9200/_cat/indices?v’

查看结点 curl ‘localhost:9200/_cat/nodes?v’

小结:此类命令都是GET请求’ip:port/_cat/XXX?v’

 

增删改查命令:

命令遵循的格式:

curl-X:///

新增修改是PUT请求,删除是DELETE请求,查询是GET

创建索引:(pretty非必要,为了使返回信息更美丽)

curl -XPUT 'localhost:9200/customer?pretty'

插入文档:

curl -XPUT 'localhost:9200/customer/car/1?pretty' -d '
        {
          "name": "YeJingtao"
        }'

结果是:

ElasticSearch 命令-(基础篇)_第1张图片 

Created表示插入成功,Shards表示有2个分片(PR各一片ElasticSearch原理有介绍)都保存成功。

查看这条记录的命令:

curl -XGET 'localhost:9200/customer/external/1?pretty'

PS0:插入文档时类型不可省略,必须指定。

PS1:索引的创建可以是隐式的,例如在执行创建文档这一条命令时ES会自动创建索引

PS2ID部分是可选的,如果不指定,Elasticsearch将产生一个唯一的ID来索引这个文档。从ES设计来讲,我们更关心的是对文档内容的索引,而不去关心ID是多少,所以实际应用中可以将ID交给ES维护。

修改记录:

curl -XPUT 'localhost:9200/customer/ car /1?pretty' -d '
        {
          "name": "YeJingtao-V2"
        }'

PUTPOST效果一样,PUT是幂等的)

删除记录:

curl -XDELETE 'localhost:9200/customer/external/1?pretty'

删除索引:

curl -XDELETE 'localhost:9200/customer'

索引删除时,索引内的类型和记录全部清除。

 

Bulk批量操作:

除开上面介绍的单个操作外,ES还供了一个叫bulkAPI可以进行批量操作,进行大批量文档和索引的更新或删除操作,极大的提升了操作效率。

API命令格式是ip:port/index/type/_bulk–data-binary @jsonfile

Jsonfile也有格式要求,必须是一行描述信息一行文档信息

描述信息:{"index":{"_index":"stuff_orders","_type":"order_list","_id":903713}}

其中indextype不是必须的,与上面API命令中的indextype相呼应,二者选择填其一,如果都存在以json文件中的为准。

文档信息只要是标准的json格式就好,没有内容要求,例如

{"account_number":1,"balance":39225,"firstname":"Amber","lastname":"Duke","age":32,"gender":"M","address":"880HolmesLane","employer":"Pyrami","email":"[email protected]","city":"Brogan","state":"IL"}

文档样例:(https://github.com/yejingtao/forblog/tree/master/elasticsearch

命令:curl -XPOST192.168.226.133:9200/my_index/customer/_bulk?pretty --data-binary @accounts.json

再回头看下索引的状态:

有了这1000条记录,我们就可以开始ES的核心“搜索之旅”了。

 

搜索查询分类和简介:

从命令格式上来划分有两种方式:一是通过RESTfulrequest API传递查询参数,也称“query-string”;另一个是通过发送REST request body,也称作JSON格式。

先从直观上感觉下两种风格的差异,以下两条命令是等价的。

风格1

curl -XGET ‘192.168.226.133:9200/my_index/_search?pretty’

风格2

curl - XGET 'localhost:9200/ my_index /_search?pretty' -d'
            {
              "query": {"match_all": {} }
            }'

在搜索时url中可以指定索引名和类型名以减少搜索的范围:

/_search:搜索所有索引的所有类型;

/my_index/_search:搜索my_index索引的所有类型;

/students, my_index /_search:搜索studentsmy_index索引的所有类型;

/ my_*/_search:搜索名称以my_开头的所有索引的所有类型;

/ my_index/customer/_search:搜索my_index索引的customer类型;

/_all/customer/_search:搜索所有索引的customer类型

PS:一旦你取回了你的搜索结果,Elasticsearch就完成了使命,它不会维护任何服务器端的资源或者在你的结果中打开游标,这也是RESTFul风格的一个特性,也注定了ES每次返回值默认是有限制的。

 

由于REST request bodyJSON格式从可读性和灵活性来说都给开发者带来太多的美感,所以实际应用中重点使用JSON格式,这种查询语句又被称为DSL。而DSL又因原理不同被划分为查询DSL(query DSL)和过滤DSL(filter DSL)

 

DSL格式如果再使用linuxcurl命令来书写那真是太累了,这里我们使用ELK组合中的Kibana来帮助我们查询ES

下载地址:https://www.elastic.co/downloads/kibana

按照官网山教程

1下载解压,2配置config/kibana.yml3执行bin/kibana4浏览器访问http://localhost:5601

ElasticSearch 命令-(基础篇)_第2张图片

万事俱备,下一篇开始啃queryfilter、聚合三种具体搜索命令。

你可能感兴趣的:(ElasticSearch)