美文网首页
ElasticSearch

ElasticSearch

作者: 冒险小A | 来源:发表于2019-04-24 11:06 被阅读0次

    一. 基本概述

    二. 方法

    1. query方法(org.elasticsearch.index.query包)
    • MatchQueryBuilder matchQuery(String name, Object text) {}:会将搜索词分词,再与目标查询字段进行匹配,若分词中的任意一个词与目标字段匹配上,则可查询到。
    • TermQueryBuilder termQuery(String name, int value) {}:不会对搜索词进行分词处理,而是作为一个整体与目标字段进行匹配,若完全匹配,则可查询到。

    三. 分词

    四. 自动补全

    五. 调优

    代码层面:

    1. query不必要全是must,must是必须满足的条件,如果不是必须,可以用should
    2. 只返回需要的数据集,用public SearchRequestBuilder setFetchSource(@Nullable String include, @Nullable String exclude) {}

    索引与配置层面:

    1. 索引读写优化:在settings中"index.store.type":"niofs",读写索引使用Nio file system
    2. 当索引结构比较稳定时,可以使用"dynamic":"strict"以严格模式来动态索引
    3. es6.0版本之前"_all":{"enabled":false}防止所有的字段都被索引起来做分词,可以节省很多空间,提高性能
    4. 在settings中"index.query.default_field":"title" : 默认query_string等是走的all,这样配置可以设置默认查询的索引
    5. 分片大小最好控制在10~20G,性能最佳
    6. 网络波动等造成的分片挂掉后一段时间 , 自动恢复机制开启时 , 数据太多可能会影响集群不稳定 , 可以设置延迟恢复策略"index.unassigned.node_left.delayed_timeout": "5m"延迟五分钟
    7. es刷新索引并不是真正实时刷新 , 而是有默认间隔为1s的刷新 , 可以根据实际情况更改putip:9200/_cluster/settings"index.refresh_interval":"30s"(5.x版本以上不适用 , 有新格式代替)
    8. 节点之间的哨兵机制可能会被jvm的gc中stop the world而判断错误 , 启动恢复策略 , 可以适当调增ping的超时时间与重试次数 , 在配置文件中修改
    #节点间存活检测时间
    discovery.zen.fd.ping_interval=10s
    #存活超时时间
    discovery.zen.fd.ping_timeout=60s
    #存活超时重试次数
    discovery.zen.fd.ping_retries=5
    
    1. master只协调不存数据node.master=true,node.data=false
    2. jvm设置不要超过总内存50% , 也不要超过32G , 此外设置的越大越好
    3. 硬件上 , 使用ssd
    4. 一次性写入大量数据 , 不要用index的api , 要用bulk , 异步接口提升qps

    六. 技术栈

    1. logstash
    2. kibana

    相关文章

      网友评论

          本文标题:ElasticSearch

          本文链接:https://www.haomeiwen.com/subject/bjvwgqtx.html