当前位置: 首页 > news >正文

纯文本网站建设谷歌sem推广

纯文本网站建设,谷歌sem推广,联想服务器怎么建设第二个网站,dw做网站怎么连接gif图片索引原理 倒排索引 倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。ES底层在检索时底层使用的就是倒排索引。 索引模型 现有索…

       


索引原理

倒排索引

倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。ES底层在检索时底层使用的就是倒排索引。

索引模型

现有索引和映射如下:

{"products" : {"mappings" : {"properties" : {"description" : {"type" : "text"},"price" : {"type" : "float"},"title" : {"type" : "keyword"}}}}
}

先录入如下数据,有三个字段title、price、description等

_idtitlepricedescription
1蓝月亮洗衣液19.9蓝月亮洗衣液高效
2iphone1319.9不错的手机
3小浣熊干脆面1.5小浣熊好吃

在ES中除了text类型分词,其他类型不分词,因此根据不同字段创建索引如下:

  • title字段:

    term_id(文档id)
    蓝月亮洗衣液1
    iphone132
    小浣熊干脆面3
  • price字段

    term_id(文档id)
    19.9[1,2]
    1.53
  • description字段

    term_idterm_idterm_id
    123
    123
    123
    123
    123
    1
    [1:1:9,2:1:6,3:1:6]
    1
    1

注意: Elasticsearch分别为每个字段都建立了一个倒排索引。因此查询时查询字段的term,就能知道文档ID,就能快速找到文档。

数据写入流程

  1. 先写入buffer,在buffer里的时候数据是搜索不到的;同时将数据写入translog日志文件

  2. 如果buffer快满了,或者到一定时间,就会将buffer数据refresh到一个新的segment file中,但是此时数据不是直接进入segment file的磁盘文件的,而是先进入os cache的。这个过程就是refresh。为什么叫es是准实时的?NRT,near real-time,准实时。默认是每隔1秒refresh一次的,所以es是准实时的,因为写入的数据1秒之后才能被看到。

  3. 只要数据进入os cache,此时就可以让这个segment file的数据对外提供搜索了

  4. 重复1~3步骤,新的数据不断进入buffer和translog,不断将buffer数据写入一个又一个新的segment file中去,每次refresh完buffer清空,translog保留。随着这个过程推进,translog会变得越来越大。当translog达到一定长度的时候,就会触发mit操作。

  5. mit操作发生第一步,就是将buffer中现有数据refresh到os cache中去,清空buffer

  6. 将一个mit point写入磁盘文件,里面标识着这个mit point对应的所有segment file

  7. 强行将os cache中目前所有的数据都fsync到磁盘文件中

  8. 将现有的translog清空,然后再次重启启用一个translog,此时mit操作完成。默认每隔30分钟会自动执行一次mit,但是如果translog过大,也会触发mit。整个mit的过程,叫做flush操作。我们可以手动执行flush操作,就是将所有os cache数据刷到磁盘文件中去。

    es中的flush操作,就对应着mit的全过程。我们也可以通过es api,手动执行flush操作,手动将os cache中的数据fsync强刷到磁盘上去,记录一个mit point,清空translog日志文件。

  9. translog其实也是先写入os cache的,默认每隔5秒刷一次到磁盘中去,所以默认情况下,可能有5秒的数据会仅仅停留在buffer或者translog文件的os cache中,如果此时机器挂了,会丢失5秒钟的数据。但是这样性能比较好,最多丢5秒的数据。也可以将translog设置成每次写操作必须是直接fsync到磁盘,但是性能会差很多。

  10. 如果是删除操作,mit的时候会生成一个.del文件,里面将某个doc标识为deleted状态,那么搜索的时候根据.del文件就知道这个doc被删除了

  11. 如果是更新操作,就是将原来的doc标识为deleted状态,然后新写入一条数据

  12. buffer每次refresh一次,就会产生一个segment file,所以默认情况下是1秒钟一个segment file,segment file会越来越多,此时会定期执行merge

  13. 每次merge的时候,会将多个segment file合并成一个,同时这里会将标识为deleted的doc给物理删除掉,然后将新的segment file写入磁盘,这里会写一个mit point,标识所有新的segment file,然后打开segment file供搜索使用,同时删除旧的segment file。

es里的写流程,有4个底层的核心概念,refresh、flush、translog、merge

当segment file多到一定程度的时候,es就会自动触发merge操作,将多个segment file给merge成一个segment file。

640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

数据查询流程

  1. 客户端发送请求到任意一个node,成为coordinate node

  2. coordinate node对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮询算法,在primary  shard以及其所有replica中随机选择一个,让读请求负载均衡

  3. 接收请求的node返回document给coordinate node

  4. coordinate node返回document给客户端

640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1

今天的分享就到这里,喜欢的朋友可以点赞收藏,感谢!!

http://www.yayakq.cn/news/398925/

相关文章:

  • 处方药可以做网站宣传吗建设银行网站多少
  • 中咨建设监理有限公司网站宝塔怎么创建网站
  • 毕业设计代做网站都可信么网站建设项目建议书
  • 可以做简历的网站网站建设意义
  • 网站上的专题 怎么设计像百度重新提交网站
  • 建设银行徐州分行网站网站跟域名是什么关系
  • 高清图片素材网站免费如何提高网站首页权重
  • 网站建立时间查询平台连接
  • 怎么快速推广网站网站编辑如何做
  • 电子商务网站建设和运营微信网站如何制作软件
  • 天津网站建设q479185700惠厦门网站建设公司哪家好
  • windows2008网站提高手机性能的黑科技软件
  • 怎么注册网站卖东西他达拉非能治好性功能障碍吗
  • 好网站开发培训昆明网站建设 技术支持
  • 宿州网站开发建设网上购物有哪些网站?
  • 自己可以自己做公司的网站吗做网站彩票代理犯法吗
  • 网上销售网站建设杭州购物网站建设
  • 恒彩装饰公司口碑长沙排名优化公司
  • 推荐好的设计网站WordPress怎么可以上传图片
  • 网站设计评分标准上海网站定制设计图
  • 现在都不用dw做网站了吗怎样自己制作网站
  • 哪个网站做ppt模板赚钱上海网站开发团队
  • 推广网站的方法做网销的一天都在干嘛
  • 白城学做网站企业网站建设的注意事项
  • 新吴区推荐做网站公司对比色网站设计
  • 佛山网站建设邓先生网页可视化设计
  • 企业 php网站建设网站开发行业发展前景
  • 网站建设对策域名购买之后怎么做网站
  • 陕西住房城乡建设部网站wordpress注册中文插件
  • 广东网站建设公司电话哪家编程机构的性价比比较高