elasticsearch
说明:本文主要总结自链接[1],此外安装参考链接[2][3][4] 。
概念
索引(index)
一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。
在一个集群中,如果你想,可以定义任意多的索引。
类型(type)
在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。
文档(document)
一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表示,而JSON是一个到处存在的互联网数据交互格式。
在一个index/type里面,只要你想,你可以存储任意多的文档。注意,尽管一个文档,物理上存在于一个索引之中,文档必须被索引/赋予一个索引的type。
下载安装
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.tar.gz
解压缩
cd bin
运行命令: ./bin/elasticsearch
安装配置常见错误:
[1]: max file descriptors [8192] forelasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areasvm.max_map_count [65530] is too low, increase to at least [262144]
使用
增删改查
要检查集群健康,我们将使用_cat API。需要事先记住的是,我们的节点HTTP的端口是9200:
curl 'localhost:9200/_cat/health?v'
说明:当我们询问集群状态的时候,我们要么得到绿色、黄色或红色。绿色代表一切正常(集群功能齐全),黄色意味着所有的数据都是可用的,但是某些复制没有被分配(集群功能齐全),红色则代表因为某些原因,某些数据不可用。注意,即使是集群状态是红色的,集群仍然是部分可用的(它仍然会利用可用的分片来响应搜索请求),但是可能你需要尽快修复它,因为你有丢失的数据。
获得节集群中的节点列表:
curl 'localhost:9200/_cat/nodes?v'
列出所有的索引
curl 'localhost:9200/_cat/indices?v'
创建一个索引
现在让我们创建一个叫做“customer”的索引,然后再列出所有的索引:
curl -XPUT 'localhost:9200/customer?pretty'
curl 'localhost:9200/_cat/indices?v'
将一个简单的客户文档索引到customer索引、“external”类型中,这个文档的ID是1,操作如下:
curl -XPUT'localhost:9200/customer/external/1?pretty' -d '
{
"name": "John Doe"
}'
取出索引的文档:
curl -XGET 'localhost:9200/customer/external/1?pretty'
删除一个文档
现在让我们删除我们刚刚创建的索引,并再次列出所有的索引:
curl -XDELETE 'localhost:9200/customer?pretty'
curl 'localhost:9200/_cat/indices?v'
总结:
如果我们仔细研究以上的命令,我们可以发现访问Elasticsearch中数据的一个模式。这个模式可以被总结为:
curl -<REST Verb><Node>:<Port>/<Index>/<Type><ID>
批量操作
搜索API
两种基本的方式来运行搜索:一种是在REST请求的URI中发送搜索参数,另一种是将搜索参数发送到REST请求体中。
方法一:REST请求
curl'localhost:9200/bank/_search?q=*&pretty'
对于这个响应,我们看到了以下的部分:
- took —— Elasticsearch执行这个搜索的耗时,以毫秒为单位
- timed_out —— 指明这个搜索是否超时
- _shards —— 指出多少个分片被搜索了,同时也指出了成功/失败的被搜索的shards的数量
- hits —— 搜索结果
- hits.total —— 能够匹配我们查询标准的文档的总数目
- hits.hits —— 真正的搜索结果数据(默认只显示前10个文档)
方法二:使用请求体方法的等价搜索是:
curl -XPOST'localhost:9200/bank/_search?pretty' -d '
{
"query": {"match_all": {} }
}'
后台启动
./elasticsearch -d
备注:pretty参数,仅仅是告诉Elasticsearch返回美观的JSON结果
[1]:http://blog.csdn.net/cnweike/article/details/33736429
[2]: http://www.21yunwei.com/archives/5239
[3]: http://www.cnblogs.com/xxoome/p/6663993.html
[4]: http://www.cnblogs.com/sloveling/p/elasticsearch.html
[5]: http://blog.csdn.net/lu_wei_wei/article/details/51205943