Document operations 文档操作
ElasticSearch    2018-09-01 00:39:59    0    0    0
cqc   ElasticSearch
metadata 文档元数据
_index 保存文档的索引名。index只是一个逻辑概念,其实际是由主分片和副本分片组成
_type 文档所归属的类型。在index这个级别上,数据分类可能还太分散,此时需要_type进行细分。比如商品目录,需要将商品细分为电子、电脑、厨房等
_id 文档编号,可指定或ES生成

索引一个文档
PUT /{index}/{type}/{id}
{
"field": "value",
...
}
 
或者可不提供{id},ES将自动生成一个

获得一个文档
    GET /website/blog/123?pretty
    GET /website/blog/123?_source=title,text 指定返回的源数据字段名
    GET /website/blog/123/_source 将只返回源数据的相关信息

检查一个文档是否存在
    curl -i -XHEAD http://localhost:9200/website/blog/123。加上-i表示显示头信息、-XHEAD表示ES服务端只需返回HEAD的信息即可。当HEAD中返回200的status表示数据存在,404表示数据不存在

替换文档
    同“索引一个文档”一致,当已经存在相同id时,ES将直接替换原有的文档,在返回参数中有个created参数等于false

新增一个文档
    PUT /website/blog/123?op_type=create
    PUT /website/blog/123/_create
    以上两种方式都可以。当不存在指定ID的文档时,其响应的HEAD中status=201、BODY中的created=true。而当已经存在对应文档时,HEAD和BODY中均有status=409表示冲突

删除一个文档
    DELETE /website/blog/123 当删除成时,found等于true,否则为false

部分更新
    POST /website/blog/1/_update { "doc" : { "tags" : [ "testing" ], "views": 0 }}
    POST /website/blog/1/_update { "script" : "ctx._source.views+=1"}
    POST /website/blog/1/_update { "script" : "ctx._source.tags+=new_tag", "params" : { "new_tag" : "search" }}
    POST /website/blog/1/_update { "script" : "ctx.op = ctx._source.views == count ? 'delete' : 'none'", "params" : { "count": 1 }}
    POST /website/pageviews/1/_update { "script" : "ctx._source.views+=1", "upsert": { "views": 1 }}
    POST /website/pageviews/1/_update?retry_on_conflict=5 { "script" : "ctx._source.views+=1", "upsert": { "views": 0 }}

批量获取文档
     GET /_mget { "docs" : [ { "_index" : "website", "_type" : "blog", "_id" : 2 }, { "_index" : "website", "_type" : "pageviews", "_id" : 1, "_source": "views" } ]}
    GET /website/blog/_mget { "docs" : [ { "_id" : 2 }, { "_type" : "pageviews", "_id" : 1 } ]}
    GET /website/blog/_mget { "ids" : [ "2", "1" ]}

批量操作文档 bulk
     bulk格式
     { action: { metadata }}\n { request body }\n { action: { metadata }}\n { request body }\n ... 注意最后一行也需要\n
     action有以下类型:create、index、update、delete(不需要request body行)
     metadata有:_index、_type、_id

     POST /_bulk
     { "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
     { "create": { "_index": "website", "_type": "blog", "_id": "123" }}
     { "title":    "My first blog post" }
     { "index":  { "_index": "website", "_type": "blog" }}
     { "title":    "My second blog post" }
     { "update": { "_index": "website", "_type": "blog", "_id": "123", "_retry_on_conflict" : 3} }
     { "doc" : {"title" : "My updated blog post"} }
 
     POST /website/log/_bulk
     { "index": {}}
     { "event": "User logged in" }
     { "index": { "_type": "blog" }}
     { "title": "Overriding the default type" }


上一篇: Index 索引

下一篇: Mapping 映射

文档导航