elasticsearch储存数据就是将所有的数据储存在一个巨大的索引里,所以每一个数据都是一个索引,而且elasticsearch的服务本身就是分布式的,因此即使有一些结点挂了也不会导致服务挂起。
并且,结点更多检索的速度越快(一定程度上,更多的节点能够负载更多的请求)。
目前的认知是elasticsearch是一种牺牲空间,节约时间的检索方案。
常用的命令如下:
文档
什么是文档
elasticsearch储存的数据叫做文档,文档是Json结构的数据
例如:
{
"title":"First Article",
"text":"To record somthing happened today.",
"views":0,
"creator":"Peter"
}
当你将许多许多文档,几十万,几百万,索引到elasticsearch服务上,他们会均匀地分散到集群的各个结点上,通过elasticsearch,你可以对他们进行快速、精准、定制化的搜索,统计。你可以通过一系列请求设置,以保证检索结果是你想要看见的。
这就是elasticsearch强大的地方。
(这些只是个人见解啊,有不同观点的欢迎一起留言探讨!!)
文档元数据
- _index 文档在哪存放
- _type 文档表示的对象类别
- _id 文档唯一标识
其实那个index和type都是认人为划分的,我常把他想象成数据库和库表,
例如:
product/order(产品订单)
product/stock(产品库存)
costomer/message(用户信息)
…
根据你个人喜好进行划分就可以啦~~
文档操作请求
创建新文档
方法一:
PUT /website/blog/1
{
"title":"Create",
"text":"To create a new index"
}
下划线后面跟着的就是id,和数据库一样,检索文档时需要一个唯一的主键
PUT /website/blog/123?op_type=create
{ ... }
PUT /website/blog/123/_create
{ ... }
如果主键重复会报错
方法二:
POST /website/blog/
{
"title":"Create",
"text":"To create a new index"
}
如果没有给定id直接创建的话elasticsearch会自动生成一个主键
更新文档
PUT /website/blog/123
{
"title": "My first blog entry",
"text": "I am starting to get the hang of this...",
"date": "2014/01/02"
}
文档更新后,返回的_version会增加1,例如文档第一次被索引是,version是1,当文档被更新时,version变为2。
并且,在更新文档时,顺序为:
- 从旧文档构建 JSON
- 更改该 JSON
- 删除旧文档
- 索引一个新文档
删除文档
DELETE /website/blog/123
如果删除成功,会返回响应码200,删除后的文档version也会增加1,如果再去创建同意主键的文档,version会增加1
如果删除失败,文档不存在,会返回404响应码。
查找文档
GET /website/blog/123?pretty
GET /website/blog/123?_source=title,text
只需要部分属性就这压根指定需要的部分
以上这些内容都来自官网elastic官方文档
经过个人的一些归纳整理和学习新的。
还有一句,所有的请求都是简写,如果要访问的话,要补足很多相关内容的
curl -X GET ‘localhost:9200/website/blog’ -H ‘Content-Type:application/json’ -d ‘{…}’
按照标准写法才能正常访问。