ES-优化应用篇

2018-05-24  本文已影响22人  靈08_1024

本文主要讲述了对ES的启动后优化。主要采用以es-head插件的方式。

1、索引分片的优化:其中包括索引分片的数量控制、分片的副本数量控制

在head插件中执行操作如图,其中的PUT处可以选择为其他HTTP方法:

刷新结果:

添加索引分片的结果.jpg

新增索引时,如果不指定分片数量,则默认为5.(单节点强制副本时,所有副本会挂在空节点上,如上图)
指定数量的插入:

PUT http://localhost:9200/secisland/
{
  "settings": {
    "number_of_shards": 2,
    "number_of_replicas": 3
  }
}

前面的PUT为HTTP方法,中间的是ES的地址,后面的secisland为新建的索引名。
注意:如果只有一个节点的话,不建议使用分片。

指定节点功能,指定数据节点、主节点等,node.master: truenode.data: false。数据节点关闭http等, http.enable: false

搜索优化

中文分词

ES的默认分词器为标准分词器。其英文分词是基于空格和标点符号,可以说是well done。而中文分词是基于汉字的,比如搜索“大数据”会将“大”“数”“据”三个字分开搜索,而我们实际期望的是大数据作为一个整体,或者有“大数据”的内容靠前。这时候需要一个分词器——ik分词器

测试分词链接:

http://localhost:9200/hospital/_analyze?analyzer=standard&pretty&text=ES是大数据

注意替换其中的分词器:细粒度的为ik_max_word;粗粒度的为ik_smart。

下载中文分词器:
在elasticsearch目录下,执行以下命令(注意es修改版本号),自动下载解压到plugin目录下:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.6.1/elasticsearch-analysis-ik-5.6.1.zip

完成后重启即可。
ps:也可以新建分词器。分词器即*.dic就是一堆短词用回车分割。

索引中添加“index.stroe.type”:"niofs"(6.x默认取系统最优选择,可以不用设置)

mapping 中添加:

"dynamic":"strict",
"_all":{
    "enabled":"false"
}

ps:6.0 废弃该字段。

分片数的控制:建议每个分片的大小在10-20G。然后决定分片的数量。

针对于某些表现出assign的节点(这是节点短暂掉线):"index.unassigned.node_left.delayed.timeout":"5m"

禁止通配符删除:

{
"transient":
    {
        "action.destructive_requires_name":true
    }
}

节点间的检测:

# 节点间的存活检测间隔
discovery.zen.fd.ping_interval: 10s
# 节点间检测超时时间
discovery.zen.fd.ping_timeout: 120s
# 检测超时重试次数
discovery.zen.fd.ping_retries: 5

bulk是一个异步的接口。

上一篇下一篇

猜你喜欢

热点阅读