Elasticsearch
添加索引
一个存储关联数据的地方
用来指向一个或者多个分片(shards)的逻辑命名空间(logical namespcase)
应用程序直接与索引通信
一个分片(shard)
一个最小级别的"工作单元(worker unit)"
保存索引中所有数据的一部分
就是一个Lucene实例
就是一个完成的搜索引擎
文档存储在分片中,在分片中被索引
分片
Elasticsearch在集群中分发数据关键
是数据的容器
文档存储在分片中
分片分配到集群中的节点上
集群扩容或者缩小,elasticsearch将自动在节点上迁移分片,以保证集群平衡
主/复制分片(primary / replica shard)
分片可以是主分片也可以是复制分配
索引中的每个文档属于一个单独的主分片
主分片数量决定索引最多存储的数据
复制分片是主分片的一个副本
提供数据灾备
提供读请求
索引创建完毕,主分配数量就固定,复制分片数量可以随时调整
数据
- 文档
- 对象(object)和文档(document)是等价相通
对象是一个json结构体,类似于哈希、hashmap、字典或者关联数据
对象(object)中还可能包含其他对象(object)
Elasticsearch中文档(document)
- 最顶层结构/跟对象(root object)序列化成json数据以ID标识并存储于elasticsearch中
文档元数据(metadata)
- _index:类似于关系型数据库里的"数据库",我们存储和索引关联数据的地方
_type:类似于关系新数据库中的一个类,定义了属性或与对象关联的数据。
_id:标识一个唯一的文档
索引
- 索引一个文档通过(index API)使数据可以被存储和搜索。
获取
- 获取文档
- GET /website/blog/123?pretty
Pretty 美化json输出
_sourc包含原始文档
检索文档的一部分
- GET /website/blog/123?_source=title,text
存在
- 检索文档是否存在
- curl -i -XHEAD http://localhost:9200/website/blog/123
更新
- 重建索引(更新整个文档)
PUT /websit/blog/123
{
"title":"my first blog entry"
……
}
创建
删除
版本控制
局部更新
Mget
批量