技术上来讲,一个主分片最大可以存储 Integer.MAX_VALUE - 128 个文档,可是实际最大值还须要参考你的使用场景:包括你使用的硬件, 文档的大小和复杂程度,索引和查询文档的方式以及你指望的响应时长。html
在 Elasticsearch 中, 每一个字段的全部数据 都是 默认被索引的 。 即每一个字段都有为了快速检索设置的专用倒排索引。并且,不像其余多数的数据库,它能在 相同的查询中 使用全部这些倒排索引,并以惊人的速度返回结果。web
全部须要咱们作的就是选择一个索引名,这个名字必须小写,不能如下划线开头,不能包含逗号。 数据库
注解:index不能是大写,不然没法将数据加入到ES中。json
一个type 命名能够是大写或者小写,可是不能如下划线或者句号开头,不该该包含逗号, 而且长度限制为256个字符. 数组
自定义type和id,输入的请求应该是put开头:app
PUT /website/blog/123 { "title": "My first blog entry", "text": "Just trying this out...", "date": "2014/01/01" }
若是使用自动生成id,输入的请求是post开头:elasticsearch
POST /website/blog/ { "title": "My second blog entry", "text": "Still trying this out...", "date": "2014/01/01" }
若是你的数据没有天然的 ID, Elasticsearch 能够帮咱们自动生成 ID 。 请求的结构调整为: 再也不使用
PUT
谓词(“使用这个 URL 存储这个文档”), 而是使用POST
谓词(“存储文档在这个 URL 命名空间下”)。分布式
put是有幂等性,而post是非幂等性,换句话说,屡次执行put,返回的结果必定相同。ide
在 Elasticsearch 中文档是 不可改变 的,不能修改它们。 相反,若是想要更新现有的文档,须要 重建索引或者进行替换;
update
API, 这个 API 能够用于 partial updates to a document 。 虽然它彷佛对文档直接进行了修改,但实际上 Elasticsearch 执行如下过程:post
- 从旧文档构建 JSON
- 更改该 JSON
- 删除旧文档
- 索引一个新文档
update的做用是仅仅将这些流程合在了一块儿。
在分布式系统中深度分页
理解为何深度分页是有问题的,咱们能够假设在一个有 5 个主分片的索引中搜索。 当咱们请求结果的第一页(结果从 1 到 10 ),每个分片产生前 10 的结果,而且返回给 协调节点 ,协调节点对 50 个结果排序获得所有结果的前 10 个。
如今假设咱们请求第 1000 页--结果从 10001 到 10010 。全部都以相同的方式工做除了每一个分片不得不产生前10010个结果之外。 而后协调节点对所有 50050 个结果排序最后丢弃掉这些结果中的 50040 个结果。
能够看到,在分布式系统中,对结果排序的成本随分页的深度成指数上升。这就是 web 搜索引擎对任何查询都不要返回超过 1000 个结果的缘由。
为了可以将时间域视为时间,数字域视为数字,字符串域视为全文或精确值字符串, Elasticsearch 须要知道每一个域中数据的类型。这个信息包含在映射中。
https://elasticsearch.cn/book/elasticsearch_definitive_guide_2.x/mapping-intro.html
该连接很准确的解释了mapping。mapping一旦定义,就没法改变。
考虑包含 内部对象的数组是如何被索引的。 假设咱们有个
followers
数组:{ "followers": [ { "age": 35, "name": "Mary White"}, { "age": 26, "name": "Alex Jones"}, { "age": 19, "name": "Lisa Smith"} ] }这个文档会像咱们以前描述的那样被扁平化处理,结果以下所示:
{ "followers.age": [19, 26, 35], "followers.name": [alex, jones, lisa, smith, mary, white] }
{age: 35}
和{name: Mary White}
之间的相关性已经丢失了,由于每一个多值域只是一包无序的值,而不是有序数组。这足以让咱们问,“有一个26岁的追随者?”可是咱们不能获得一个准确的答案:“是否有一个26岁 名字叫 Alex Jones 的追随者?”
相关内部对象被称为 nested 对象,能够回答上面的查询