Elasticsearch索引操作
1、RESTful接⼝格式
ElasticSearch是⼀个基于Lucene的搜索服务器。它提供了⼀个分布式多⽤户能⼒的全⽂搜索引擎,基于RESTful web接⼝ 其中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命令
创建⼀个索引库
2.2、Dev Tools
GET _search
{
"query" : {
"match_all" : {}
}
}
2.3 head
3、索引⽂档的创建
3.1、curl命令
windows下安装的CURL有可能不⽀持单引号,如果有报错,还请改成双引号,内部使⽤转义字符转义。
添加-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接⼝如下
4.3、Dev Tools
GET /fendo/_search?pretty
{
"query": { "match_all": {} }
}
或
POST /fendo/_search?pretty
{
"query": { "match_all": {} }
}
4、索引⽂档的更新
根据索引时的ID更新的⽂档的内容其RESTful接⼝如下
curl -XPUT "localhost:9200/fendo/account/222" -d "{\"first_name\":\"fk\"}
说明更新成功curl是什么命令
5、索引⽂档的删除
根据索引时的ID更新的⽂档的内容其RESTful接⼝如下
删除成功
6、通过样例数据建⽴索引
6.1、下载样例数据:
下载样例数据集链接,解压数据到指定⽬录
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、总结
总结上⾯涉及到的命令⼤致如下:
通过⽂件导⼊: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 "localhost:9200/fendo/account/222" -d "{\"first_name\":\"fk\"}
5、查看所有索引:curl localhost:9200/_cat/indices?v
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论