ES:document的创建和删除

1、document的全量替换

           (1)语法与创建文档是一样的,如果document id不存在,那么就是创建;如果document id已经存在,那么就是全量替换操作,替换document的json串内容
            (2)document是不可变的,如果要修改document的内容,第一种方式就是全量替换,直接对document重新建立索引,替换里面所有的内容
 
            (3)es会将老的document标记为deleted,然后新增我们给定的一个document,当我们创建越来越多的document的时候,es会在适当的时机在后台自动删除标记为deleted的document
 

2、document的强制创建

           1)创建文档与全量替换的语法是一样的,有时我们只是想新建文档,不想替换文档,如果强制进行创建呢?
 
            (2)PUT /index/type/id?op_type=create,PUT /index/type/id/_create
 

3、document的删除

     
              (1)DELETE /index/type/id
 
              (2)不会理解物理删除,只会将其标记为deleted,当数据越来越多的时候,在后台自动删除

三、document路由

 

  1、 document路由含义:

                      表示新增document时es如何决定将其存放在index的哪个shard上,查询时es又是如何在某个shard上查询指定的document。
 

   2、路由算法:

                       路由公式
                                shard = hash(routing) % number_of_primary_shards       (结果在0~number_of_primary_shards-1之间
                        注意:primary shard的数量是固定不变的
                                routing : 每次增删改查一个document时都会带来的一个routing number,默认为document的_id,也可以自定义routing值.通过在PUT请求内指定routing参数值。
                            如:put /index/type/id?routing=user_id
                               number_of_primary_shards:primary shard的数量
 

四、document的增删改查原理

 

            1、document增删改的请求处理过程

             (1)协调节点接收来自客户端的document增删改查请求

 

                 (2)协调节点根据路由算法将document的增删改查请求分发给primary shard

 

                 (3)primary shard接收到来自协调点的请求后将请求写入transaction log 并将document写入内存缓存内。内存缓存每隔一秒将document数据同步至文件系统缓存内。增删改请求在primary shard上处理成功后,该请求将并行发送到其他的replica shard上。当transaction log同步至所有的分片上后将结果通知给客户端。

                (4)transaction log文件每隔30分钟或者文件过大的时候会触发es的冲洗flush过程。es的冲洗将文件系统缓存内的数据同步至磁盘并将transaction log清空。内存缓存内的数据也将同步至文件系统缓存并刷新到磁盘内。

                (5)tansaction log文件还每隔5秒将写请求数据同步至磁盘。

                (6)删除请求和更新请求会将document在.del文件内的数据标记为deleted,es周期性清除del文件内的数据
               
        Image[4]_thumb

            2.document的读请求处理过程

           (1)客户端将读请求发给协调点

            (2)协调点将读请求打到所有的shard上,每个shard独立执行查询,并根据查询结果创建一个按照相关性得分排序的优先队列

 

            (3)每个shard处理完成后将优先队列内的前10个相关性得分最高的返回给协调点

 

            (4)协调点根据各个shard返回的数据创建一个按照相关性得分排序的有限队列,并将前10个得分最高的作为hits返回给客户端。

 
 
Image(1)[4]_thumb
           

            3.document相关性打分

             es 默认使用的排序算法是tf/idf(词频/逆文档频率), 最后的得分是tf-idf得分与其他因子比如(短语查询中的)词项接近度、(模糊查询中的)词项相似度等的组合

                  (1)词频:统计一个词项在文档中出现的次数,频率越高,相关性得分越高

 
                  (2)逆文档频率:统计一个词项在全部索引中的出现的频率,是一个索引中文档的总数的百分比,频率越高,相关性得分越高
ZHUAN:https://www.cnblogs.com/wshcn/p/8150540.html
posted on 2016-01-11 19:11  duanxz  阅读(1280)  评论(0编辑  收藏  举报