• 2022 flag 150篇文章 63 ES elastic search


    elastic search 是一个分布式搜索和数据分析引擎,基于lucene构建;

    由一个或多个具有相同cluster.name的节点组成集群;分片:ES可以把一个大的索引分成多个分片;副本:索引的副本,提高容错性;

    集群 

      - 索引

        - 分片 

      - 副本

    ES 默认会为每个索引创建5个分片; 

     - 集群

    - 节点

     - 索引 (与mysql的数据库实例相当,索引只是一个逻辑命名空间,指向一个或多个分片)

       - 文档类型(相当于数据库中表的概念) 

       - 文档 (相当于数据库表的row)

       - mapping 

       - 分片

     

     ES查询快的原因: 集群、分片、副本

     在索引创建的时候, 确定主分片;路由算法:shard = hash(routing) % number_of_primary_shards

    数据写入过程 

     数据写入到主分片, 然后同步到全部副本分片;

    数据查询过程 

     1.查询请求发送到协调节点,协调节点把请求转发到全部分片; 

     2. 全部分片把查询结果(包含doc_id,排序值)返回到协调节点;协调节点合并、排序、分页;

     3. 协调节点根据doc_id从各个分片获取实际数据并返回给客户端;

    数据更新或删除? 
    删除:在提交的时候生成一个.del文件,把doc文档的状态更新为删除; 

    更新:doc文档的状态更新为删除; 再写新的doc; buffer每refresh一次,生成一个segment file. 要定期merge

    ES的查询有2种;一种是query(计算每个文档得分、并排序), 一种是filter(仅过滤符合条件的数据并缓存);

    bool查询 : must ,出现于查询结果中;filter,必须满足才出现;must_not:满足条件的数据不出现;

    查询:指定索引 , 条件查询: term(精确查询)、range(范围查询),terms(多值匹配),match(分词查询)、ids(); exits(包含某个字段)、missing(不包含)

    "ids": {
    "type": "news",
    "values": "2101"
    }

    分页滚动查询 scroll

    "scroll":"1m",
    "scroll_id":"DnF1ZXJ5VGhlbkZldGNoAwAAAAAAADShFmpBMjJJY2F2U242RFU5UlAzUzA4YXZTbjZEVTlSUDNTMDgxZw=="

    sort , 排序 

    "sort":[
      {"user_id":{"order":"asc"}},
      {"salary":{"order":"desc"}}
    ]

    aggs,聚合

    max,min, avg, sum, stats, terms(分组查询), cardina

    size设置为0,返回聚合结果。

  • 相关阅读:
    JS表格测试
    2018电脑选购配置
    一句话技巧总结
    我的码风
    友情链接
    写代码时需要注意的一些东西
    他是 ISIJ 第四名,也是在线知名题库的洛谷“网红”
    从并查集的按秩合并看一类构造性问题
    高一上期末考游记
    P3233 [HNOI2014]世界树
  • 原文地址:https://www.cnblogs.com/luoguoqiang1985/p/15888413.html
Copyright © 2020-2023  润新知