data replication model 本节首先简要介绍Elasticsearch的data replication model,然后详细描述以下CRUD api: 1.读写文档(Reading and Writing documents) 1.1 介绍(Introduction) 在es中的每个索引都会被划分成一组分片,并且每个分片都有多个副本.这些副本是一组副本分片并且当删除或者添加文档的时候必须同步到各个副本.如果我们没有做到这点,从不同副本中读取的数据会不一致.我们把分片副本同步和…
Single document APIs Index API Get API Delete API Update API Multi-document APIs Multi Get API Bulk API Delete By Query API Update By Query API Reindex API 所有CRUD api都是单索引api.索引参数接受单个索引名,或指向单个索引的别名. 1.Index API index API 可以添加或者更新特定索引的文档,并使其可搜索.下面的例子插…
5. UPDATE API 更新操作可以使用脚本来更新.更新的时候会先从索引中获取文档数据(在每个分片中的集合),然后运行脚本(使用可选的脚本语言和参数),再果进行索引(还允许删除或忽略该操作).它使用版本号保证在读取文档和重新索引期间,被更新的文档不会发生任何修改操作. 注意,update操作会重新索引文档,它可以减少网络往返次数和降低在获取文档和索引文档之间发生版本号冲突的可能.要支持这一特性,需要开启_source字段(因为要读取旧数据,和替换操作不一样,替换操作不需要读旧数据). 例如,…
8.Bulk API 可以把多个index或delete操作放在单个bulk API中执行.这样可以极大地提高索引速度. /_bulkAPI使用如下的JSON结构: action_and_meta_data\n optional_source\n action_and_meta_data\n optional_source\n .... action_and_meta_data\n optional_source\n 注意,最后一行数据必须要以\n结尾.发送请求时,Content-Type 标头…
7.Multi Get API(Multi Get API) multi GET API 允许你一次性获取多个文档,你需要指定docs数组,其中包含了所有你需要查询的文档,每个查询结构至少包含索引,类型和文档id.如果操作过程中遇到错误将会返回错误信息.返回的结果与 GET API 的结果结构类似. 如下例所示: GET /_mget { "docs" : [ { "_index" : "test", "_type" : &q…
3.Delete API delete API 可以让你删除一个特定id的文档,下面例子删除twitter索引中_doc类型.id为1的文档: DELETE /twitter/_doc/1 返回结果: { "_shards" : { "total" : 2, "failed" : 0, "successful" : 2 }, "_index" : "twitter", "_ty…
2.GET API get API 可以通过文档id从索引中获取json格式的文档,以下示例从twitter索引中获取type为_doc,id值为0为的JSON文档: GET twitter/_doc/0 返回结果: { "_index" : "twitter", "_type" : "_doc", "_id" : "0", "_version" : 1, "…
9.REINDEX API Reindex要求为源索引中的所有文档启用_source. reindex 不会配置目标索引,不会复制源索引的设置.你需要在reindex之前先指定mapping,分片数量,副本数量等选项. _reindex最常用的一种方式是复制一个索引.下例会将twitter索引中的文档复制到new_twitter索引中: POST _reindex { "source": { "index": "twitter" }, "…
4.Delete By Query API _delete_by_query API可以删除某个匹配条件的文档: POST twitter/_delete_by_query { "query": { "match": { "message": "some message" } } } query字段的语法规则和 Search API一样.你也可以传递和search API一样的q参数 返回结果: { "took&qu…
6.Update By Query API _update_by_query 接口可以在不改变 source 的情况下对 index 中的每个文档进行更新.这对于获取新属性或其他联机映射更改很有用.以下是 API: POST twitter/_update_by_query?conflicts=proceed 这将返回如下内容: { "took" : 147, "timed_out": false, "updated": 120, "d…