Elasticsearch索引文档

内容主要通过翻译官方文档而来,版本7.10

<李>

<>强索引文档操作(通过卷发实现)

curl - x将twitter“localhost: 9200//_doc/1”- h”application/json - type:“- d”

{

“用户”:“kimchy”

“post_date”:“2009 - 11 - 15 t14:12:12”

“消息”:“尝试Elasticsearch”

}”


- x选项:指定旋度的请求操作,默认是得到,也可以是把帖子删除

- h选项:传入请求头

- d选项:数据,数据内容选项


不存在索引时,会自动创建。当然可以进行设置(通过action.auto_create_index)。

把_cluster/设置

{

“持久”:{

"行动。auto_create_index”:“twitter, index10 -index1 *, +印第安纳*”

}

}

注:名称为twitter, index10的索引会创建,不符合index1 *格式,但符合印第安纳*格式也会被创建。


把_cluster/设置

{

“持久”:{

"行动。auto_create_index”:“false”

}

}

注:默认全部不自动创建。会提示错误。如例子:{"错误":{“root_cause”:[{“类型”:“index_not_found_exception”,“原因”:“没有这样的指数[mytwitter]”


把_cluster/设置

{

“持久”:{

"行动。auto_create_index”:“true”

}

}

注:默认全部自动创建


默认的映射规则,一个索引下只允许有一个类型。

例如试图创建第二个名为mydoc的类型:

curl - x将twitter“localhost: 9200//mydoc/1”- h”application/json - type:“- d”

{

“用户”:“kimchy”

“post_date”:“2009 - 11 - 15 t14:12:12”

“消息”:“尝试Elasticsearch”

}”

会产生报错:{"错误":{“root_cause”:[{“类型”:“illegal_argument_exception”,“原因”:“拒绝更新映射到(twitter)作为最终映射会有更多


1类型:[_doc mydoc] "}),“类型”:“illegal_argument_exception”,“原因”:“拒绝更新映射到(twitter)作为最终映射会超过1



<强> 2索引文档的op_type选项(只允许新建,不允许更新文档):

curl - x将“localhost: 9200/微博/_doc/1 ?op_type=创建“- h - type: application/json - d”

{

“用户”:“kimchy”

“post_date”:“2009 - 11 - 15 t14:12:12”

“消息”:“尝试Elasticsearch”

}”

如果索引文档twitter _doc/1已经存在,创建就会失败。


与上面等价的写法:

curl - x将“localhost: 9200/微博/_create/1”- h - type: application/json的- d”

{

“用户”:“kimchy”

“post_date”:“2009 - 11 - 15 t14:12:12”

“消息”:“尝试Elasticsearch”

}”


文档ID的自动生成:

如果没有指定文档ID,系统会自动生成一个唯一ID(索引该文档理论肯定是新创建的,不会更新其他文档):

例:

curl - x发布“localhost: 9200/微博/_doc/? h - type: application/json的- d”

{

“用户”:“mjj”

“post_date”:“2009 - 11 - 15 t14:12:12”

“消息”:“测试Elasticsearch”

}”

返回结果(部分):{“_index”:“推特”、“_type”:“_doc”、“_id”:“olLK42oBqV8-hMggVV3X”


<强> 3乐观的并发控制:

乐观并发controledit

索引操作只能执行条件,如果最后修改文档被分配序列号和初级词


指定的if_seq_no和if_primary_term参数。如果检测到不匹配,操作将导致VersionConflictException和状态


代码是409。看到乐观并发控制的更多细节。

索引文档结束后,返回结果中会包含一个序号:_seq_no。索引文档前会获取下一个序号,作为自己的序号,结束后会再获取序号,进行比较。如果序号不一致,说明有其他程序索


引了文档。那么该次操作就返回409号错误。


<强> 4。路由(文档存放于那个物理碎片)

默认情况下,切分位置?或路由?是由使用一个散列的文档的id值。更明确的控制,送入散列值


函数所使用的路由器可以直接使用路由参数指定在每个操作的基础上。例如:


发布twitter/_doc吗?路由=kimchy

{

“用户”:“kimchy”

“post_date”:“2009 - 11 - 15 t14:12:12”

“消息”:“尝试Elasticsearch”

}


在上面的示例中,“_doc”文档路由到一个碎片基于提供的路由参数:“kimchy”。

Elasticsearch索引文档