怎样增加网站反向链接,好用的html编辑器,成都知名建筑公司排名,建设网站的准备工作大家好#xff0c;我是烤鸭#xff1a;今天分享的是官网6.x 单一文档(Single document APIs)APIs。本文这是部分翻译#xff0c;如果想看全部的#xff0c;还是建议阅读官方api。链接#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/current/docs…大家好我是烤鸭今天分享的是官网6.x 单一文档(Single document APIs)APIs。本文这是部分翻译如果想看全部的还是建议阅读官方api。链接https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html1. 索引(index)API 添加或更新json格式
PUT twitter/_doc/1
{user : kimchy,post_date : 2009-11-15T14:12:12,message : trying out Elasticsearch
}结果
{_shards : {total : 2,failed : 0,successful : 2},_index : twitter,_type : _doc,_id : 1,_version : 1,_seq_no : 0,_primary_term : 1,result : created
}
_shards 表示接收数据的碎片。total 碎片总量执行当前操作的。failed : 操作失败的碎片数量。只要有一个成功就认为索引是操作成功的。
当索引操作成功返回时副本碎片可能不会全部启动默认情况下仅需要主元素但此行为可以更改。在这种情况下总数将等于基于副本数量设置的总数碎片并且成功将等于碎片开始数量主加副本。如果没有失败失败将是0。
版本编辑
每个索引文档都有一个版本号。关联的版本号作为对索引API请求的响应的一部分返回。在指定版本参数时索引API可选地允许乐观并发控制。这将控制将要执行的操作的文档版本。版本控制用例的一个很好的例子是执行事务读然后更新。从最初读取的文档中指定一个版本确保其间没有发生任何更改当为了更新而阅读时建议将preference 设置为_primary。例如
PUT twitter/_doc/1?version2
{message : elasticsearch now has versioning support, double cool!
}
操作类型编辑
索引操作还接受一个op_type类型它可以用来强制create操作允许“put-if-absent”的行为。当使用create 时如果索引中已经存在该ID的文档则索引操作将失败。
下面是使用op_type参数的示例
PUT twitter/_doc/1?op_typecreate
{user : kimchy,post_date : 2009-11-15T14:12:12,message : trying out Elasticsearch
}
另一种写法
PUT twitter/_doc/1/_create
{user : kimchy,post_date : 2009-11-15T14:12:12,message : trying out Elasticsearch
}
自动生成ID
可以在不指定ID的情况下执行索引操作。在这种情况下ID将自动生成。此外op_type 将被自动设置为create。下面是一个例子注意使用POST而不是PUT
POST twitter/_doc/
{user : kimchy,post_date : 2009-11-15T14:12:12,message : trying out Elasticsearch
}
结果
{_shards : {total : 2,failed : 0,successful : 2},_index : twitter,_type : _doc,_id : W0tpsmIBdwcYyG50zbta,_version : 1,_seq_no : 0,_primary_term : 1,result: created
}
路由默认情况下碎片放置或routing是通过使用文件ID值的散列来控制的。对于更明确的控制可以使用路由参数在每个操作基础上直接指定馈送到路由器使用的散列函数的值。例如
POST twitter/_doc?routingkimchy
{user : kimchy,post_date : 2009-11-15T14:12:12,message : trying out Elasticsearch
}
在上面的示例中基于提供的“kimchy”路由参数将“_doc”文档指引到碎片。
当设置显式映射时可选地使用_routing 字段来指示索引操作以从文档本身中提取路由值。这样使用路由的方式确实使得额外的文档解析传递的成本非常低。如果定义了_routing 映射并设置required则如果没有提供或提取路由值则索引操作将失败。
分布式
索引操作根据其路由指向主碎片参见上面的路由部分并在包含该碎片的实际节点上执行。在主碎片完成操作之后如果需要则将更新分发给可应用的副本。
等待active碎片为了提高对系统的写入的性能索引操作可以被配置为在进行操作之前等待一定数量的活动碎片副本。如果所需的active碎片副本数不可用则写入操作必须等待并重试直到所需碎片已开始或超时。默认情况下写入操作在执行之前只等待主碎片变成activei.e. wait_for_active_shards1。可以通过设置index.write.wait_for_active_shards来动态地在索引设置中修改此默认值。为了改变每种操作的行为可以使用wait_for_active_shards请求参数。
有效值是全部或任何正整数与索引中每个碎片的配置拷贝总数number_of_replicas1。指定大于碎片副本数量的负值或数字将引发错误。 翻译注: wait_for_active_shards 这个值不能是负的也不能大于副本数量。)
例如假设我们有一个三个节点的集群A、B和C并且我们创建一个索引index其中副本的数量设置为3个导致4个碎片副本比节点多一个副本。如果我们尝试索引操作默认情况下操作将只确保每个碎片的主副本在执行之前可用。这意味着即使B和C挂掉了并且A托管主碎片副本索引操作仍然只继续执行虽然只有一个数据副本。如果wait_for_active_shards 被设置在请求到3并且所有3个节点都是可用的那么索引在操作之前将需要3个active 碎片副本需要满足的要求是由于在集群中有3个活动节点每个都持有碎片的副本。但是如果我们将wait_for_active_shards碎片设置为all或4一个意思则索引操作不会继续进行因为在索引中的每个碎片的(副本)所有4个副本不都是active。除非在集群中出现新节点来管理碎片的第四副本否则操作将超时。重要的是要注意写入操作有时不会把数据写到足够数量的碎片副本这种设置大大降低了这种可能但因为该检查发生在写入操作开始之前也不能完全消除可能。一旦写入操作正在进行复制仍可能在任何碎片的其他副本上失败但在主副本上仍然成功。写入操作响应的_shards部分表示了复制 成功/失败 的碎片副本的数量。{_shards : {total : 2,failed : 0,successful : 2}
}
NOOP 更新当使用索引API更新文档时即使文档没有更改也总是创建文档的新版本。如果这是不可接受的使用 _update API时将detect_noop设置为true。这个参数在索引API上是不可用的因为索引API没有获取旧的源并且无法将它与新的源进行比较。
当NOOP 更新不能使用时没有一个固定的原因。这是很多因素的组合比如你的数据源发送多个更新是真的noops的频率es每秒在碎片上运行多少个查询结果用于update数据。
超时
当执行索引操作时分配给执行索引操作的主碎片可能不可用。一些原因可能是主碎片目前正在从网关恢复或进行重新定位。默认情况下索引操作将等待主碎片1分钟。timeout 参数可用于显式指定它等待多长时间。下面是将其设置为5分钟的示例
PUT twitter/_doc/1?timeout5m
{user : kimchy,post_date : 2009-11-15T14:12:12,message : trying out Elasticsearch
}2. 获取GETAPI get请求获取json数据:GET twitter/_doc/0 结果{_index : twitter,_type : _doc,_id : 0,_version : 1,found: true,_source : {user : kimchy,date : 2009-11-15T14:12:12,likes: 0,message : trying out Elasticsearch}
}上述结果包括了我们希望检索的文档的_index, _type, _id和 _version包括文档的实际_source如果在响应中found字段标示。API还允许使用HEAD检查文档的存在例如HEAD twitter/_doc/0实时默认情况下get API是实时的并且不受索引刷新率的影响当数据将成为搜索可见时。如果文档已被更新但尚未刷新则get API将在本地发出刷新调用以使文档可见。这也会使其他文档在可见性上发生变化。为了禁用实时特性可以将realtime参数设置为false。源过滤器默认情况下get操作返回_source字段的内容除非您已经使用stored_fields 参数或者如果禁用了_source 字段。可以通过使用_source 参数来关闭_source检索
GET twitter/_doc/0?_sourcefalse
如果您只需要完整的_source内容中的一个或两个字段则可以使用_source_include_source_exclude 参数来包含或过滤掉所需的部分。这对于在大型文档中检索部分内容是非常有效的因为可以节省网络开销。两个参数都采用逗号分隔的字段或通配符表达式列表。例如
GET twitter/_doc/0?_source_include*.id_source_excludeentities
如果只想指定包含则可以使用更短的符号
GET twitter/_doc/0?_source*.id,retweeted
存储字段get操作允许指定一个存储字段的集合这些字段将通过stored_fields 参数返回。如果所请求的字段未被存储它们将被忽略。例如考虑下面的映射
PUT twitter
{mappings: {_doc: {properties: {counter: {type: integer,store: false},tags: {type: keyword,store: true}}}}
}
现在新增一个文档
PUT twitter/_doc/1
{counter : 1,tags : [red]
}
尝试去检索刚才生成的
GET twitter/_doc/1?stored_fieldstags,counter
结果
{_index: twitter,_type: _doc,_id: 1,_version: 1,found: true,fields: {tags: [red]}
}从文档本身获取的字段值总是作为数组返回。由于counter字段未被存储所以GET请求在试图获取stored_fields时忽略它。
还可以检索元数据字段如_routing 字段
PUT twitter/_doc/2?routinguser1
{counter : 1,tags : [white]
}
或者
GET twitter/_doc/2?routinguser1stored_fieldstags,counter
结果{_index: twitter,_type: _doc,_id: 2,_version: 1,_routing: user1,found: true,fields: {tags: [white]}
}
此外只有leaf字段可以通过stored_field 选项返回。所以不能返回对象字段这样的请求就会失败。直接获取_source使用/{index}/{type}/{id}/_source端点来获取文档的_source字段而不必在其周围添加任何内容。例如
GET twitter/_doc/1/_source
还可以使用相同的source filtering参数来控制将返回的_source 的哪些部分
GET twitter/_doc/1/_source?_source_include*.id_source_excludeentities
注意还存在一个用于_source 端点的HEAD 变量以有效地测试文档源的存在。如果在映射中被禁用则现有文档将不具有源。
HEAD twitter/_doc/1/_source
路由
当使用索引控制路由时为了获得文档还应提供路由值。例如
GET twitter/_doc/2?routinguser1
以上将得到id是2的twitter但会基于用户路由。注意发出一个没有正确路由的get请求导致文档不你能获取。
preference 偏好哪个碎片副本来执行GET请求的preference。默认情况下操作是在碎片副本之间随机进行的。preference可以设置为_primary操作将只在主碎片上执行。_local如果可能的话操作将更倾向于在本地分配的碎片上执行。Custom (string) value(自定义字符串值)自定义值将用于保证相同的碎片将用于相同的自定义值。这可以在不同刷新状态下击中不同碎片时
使用 jumping values 。简单的示例值类似于Web session ID或用户名。刷新refresh 参数可以设置为true 以便在GET操作之前刷新相关碎片并使其可搜索。将其设置为true 应经过仔细思考和验证这不会导致系统上的高负载而减慢索引。
分布式get操作被hash成一个特定的碎片ID。它被重定向到该碎片ID中的一个副本并返回结果。在该碎片ID组中副本就是的主碎片及其副本。这意味着我们将拥有更多的副本我们将有更大的范围。
版本支持
只有当当前版本等于指定的版本时才可以使用version 参数检索文档。这种行为对于所有版本类型都是相同的除了版本类型为FORCE FORCE 一直在检索文档。请注意FORCE版本类型被弃用。在内部es 已经标记旧文档被删除并添加了一个全新的文档。旧版本的文档不会立即消失尽管你不能访问它。当继续给更多数据添加索引时es会在后台清除已删除的文档。更多关于elasticsearch 6.x内容1. elasticsearch 6.x 部署 windows入门(一) spingboot连接2. elasticsearch 6.x linux部署(二) kibana x-pack 安装3. elasticsearch 6.x (三) linux 集群多节点部署