1,Mac上安装(指定java8)

brew cask install java8

vim .base_profile
文件内容:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1..0_162.jdk/Contents/Home
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar source .base_profile
echo .base_profile
brew install elasticsearch 安装中文分词插件(根据当前es版本):
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.1.2/elasticsearch-analysis-ik-6.1.2.zip

2,优化配置

#服务器优化:更改索引片断数量
ulimit -n #配置文集优化配置
自身配置文件:elasticsearch.yml
修改bootstrap.mlockall: true,禁止内存交换 jvm配置文件(GC):jvm.options
-Xms1g 初始分配内存1g 总内存的50%但不能超过32G
-Xmx1g 最大使用内存1g mac中配置文件路径:
/usr/local/etc/elasticsearch

3,Elasticsearch索引配置

使用mappings新建index
curl -X PUT 'localhost:9200/kline_test' -H 'Content-Type: application/json' -d '
{
"settings": {
"number_of_shards": ,#分片数
"number_of_replicas" :#副本数:未批量导入数据时建议不要进行副本
},
"mappings": {
"kline_data": {
"properties": {
"code": {
"type": "text", #数据类型
},
"name": {
"type": "text","analyzer": "ik_max_word",#使用可以对文本进行最大数量的分词
"search_analyzer": "ik_max_word"
},
"market": {
"type": "byte",
},
"time": {
"type": "date" ,
    "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",#指定数据的查询格式
},
"mongo_id": {
      "type": "text",
      "index": False #不对该字段进行索引,既无法作为查询条件
      }
}
}
}
}' 

※特别提示:在6.1版本之后doc的字段属性:

  1,index的配置参数变更为True 或 False 而非之前的:not_analyzed和no

  2,include_in_all参数取消,使用copy_to来自定义_all查询

  3,详细参数说明见 http://www.cnblogs.com/dxf813/p/8447467.html

4,谨慎分片

  当在ElasticSearch集群中配置好索引后, 在集群运行中你是无法调整分片设置。 如需要调整分片数量, 也只能新建索引并导入数据后通过更换别名aliases
  对数据进行重新索引,虽然会比较耗时, 但至少能保证不会停机
 
  每个分片都是有额外的成本的:
    • 每个分片本质上就是一个Lucene索引, 因此会消耗相应的文件句柄, 内存和CPU资源
    • 每个搜索请求会调度到索引的每个分片中. 如果分片分散在不同的节点倒是问题不大.,但当分片开始竞争相同的硬件资源时, 性能便会逐步下降
    • ES使用词频统计来计算相关性,当然这些统计也会分配到各个分片上,如果在大量分片上只维护了很少的数据, 则将导致最终的文档相关性较差
  分片数量的确定:
    原则:每个分片最好不超过30G,尽量不多过多分片
    计算数量:在确定之初最好能估算出日后数据的总量,然后再进行分片(例如:未来数据可能是300G,那就至少需要10-11个分片)
    ※为保证查询质量,建议还是分片数量不要过大;网上有的人说分片不能超过20有的不能超过100
    ※个人认为需根据实际情况来进行优化,如果数据量再大且在增加额外的节点(ES会自动完成分片在不同节点上的分布平衡)后效率仍然没有改善,可新建另一个索引,然后通过程序中间件进行访问控制
    ※另外通过中间件可以进行特定数据存入指定分片(参数:_shards:0,1,2),从而达到特定数据的集中存储,提高查询效率
 
  节点数量确定(初期):
    节点数量<=分片数量*(副本数量+1)
 
5,使用optimize优化
  -随着时间的推移,ElasicSearch中每个shard的数据也会越来越多,索引越来越大,而生成的segment(在每个shard中,每个索引文件实际是由多个sgment文件组成)也会越来越多。
  而segment越多的话,则查询的性能越差,所以通过调用optimize命令,将多个segment合并成更少数量的segment(最少为一个),从而来提高查询性能。
    • curl -XPOST http://localhost:9200/shb01/_optimize?max_num_segments=1
  -在es中删除一个文档后不会立即从硬盘中删除只会标记这个文档被删除,lucene会产生一个.del文件,而在检索过程中这个文件还会参与检索只不过在最后会被过滤掉,
  这样其实也会影响效率,我们可以定期删除这些文件,同合并索引片断一样可以通过curl
    • curl -XPOST http://localhost:9200/_optimize?only_expunge_deletes=true

Mac安装6.1.2版本Elasticsearch及优化配置实践的更多相关文章

  1. 2018.4.26 Mac安装Redis5.0.3版本服务器

    Mac安装Redis服务器 安装 1.到官网下载 选择稳定版本 打开官网:https://redis.io/ 2.下载完成后,打开命令行工具,执行解压命令 tar zxvf redis-5.0.3.t ...

  2. mac安装mysql的两种方法(含配置)

    1.使用安装包安装mysql 双击打开安装文件 双击pkg文件安装 一路向下,记得保存最后弹出框中的密码(它是你mysql root账号的密码) 正常情况下,安装成功. 此时只是安装成功,但还需要额外 ...

  3. Mac 安装IDEA 2018.3 版本

    注:本文转自https://blog.csdn.net/qq_41735004/article/details/86670039 写文文的目的是,怕博主删掉然后找不到所以就写一份 1.下载idea和破 ...

  4. Nginx 1.10.1 版本nginx.conf优化配置及详细注释

    Nginx 1.10.1 的nginx.conf文件,是调优后的,可以拿来用,有一些设置无效,我备注上了,不知道是不是版本的问题,回头查一下再更正. #普通配置 #==性能配置 #运行用户 user ...

  5. Mac安装python3.x+pycharm+elasticsearch+常见报错处理(1)

    ---恢复内容开始--- mac安装python有两种方式:此处叙述官网安装下载. mac 自带python2.x版本,python2和3之间的差距还是有的.下面简单叙述我安装python3.7的过程 ...

  6. Mac 安装activate-power-mode atom

    Mac 安装activate-power-mode atom 标签: atommac 2015-12-02 14:53 308人阅读 评论(0) 收藏 举报  分类: git(2)  版权声明:本文为 ...

  7. mac 安装jdk1.5

    前期准备 Java安装包 JDK 1.5:Java for Mac OS X 10.5 Update 10(From: Apple) 辅助工具 Pacifist:用于提取*.dmg安装包中的文件(点我 ...

  8. mac平台多个php版本快速切换

    mac平台多个php版本快速切换 要求所有php版本都是由brew安装 使用brew安装php多版本方法 # brew install php56 # brew install php70 安装切换工 ...

  9. Mac安装GitLab CE记录

    0 REF REF1 原始的GitLab Documentation REF2 Installation-guide-for-GitLab-on-OS-X REF3 如何在Mac 终端升级ruby版本 ...

随机推荐

  1. windows CMD常用命令

    命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...

  2. 关于IE浏览器 ajax 请求返回数据不对的问题

    在使用ajax向后台发送请求的时候,在使用ie 进行调试的时候发现根据条件进行查询时,返回的数据与没有根据条件进行查询时数据相同,也就是条件没有发生作用. 经过同事的帮助发现ajax初始化设置时没有c ...

  3. 关于html/css的一些小技巧之hack掉"margin-top"层叠问题

    身为小前端菜鸟一枚,忽然听到这样一则传言~~ 心情久久不能平复,想到前几日,开通了博客君,特来此寻找存在feeling~ 旨在造福普罗大众(更多前端小菜鸟) 话不多说, 我们步入正题,今天来给大家分享 ...

  4. Linux内核开发进阶书籍推荐(不适合初学者)

    Linux内核开发进阶书籍推荐(不适合初学者) 很早之前就想写一篇文章总结一下Linux Kernel开发的相关资料,项目的原因,再加上家里的一些事情,一直没能找到闲暇,今天终于有些时间,希望可以完成 ...

  5. TCP三次握手及TCP连接状态 TCP报文首部格式

    建立TCP连接时的TCP三次握手和断开TCP连接时的4次挥手整体过程如下图: 开个玩笑 ACK: TCP协议规定,只有ACK=1时有效,连接建立后所有发送的报文ACK必须为1 SYN(SYNchron ...

  6. 【转】git示意图

  7. Cookie写不进去问题深入调查 https Secure Cookie

    Cookie写不进去问题深入调查 https Secure Cookie 什么情形下,Cookie 会写不进去?https Secure Cookie像是语法错误那种显而易见的就不用说了,除此之外你可 ...

  8. redis(一主两从三哨兵模式搭建)记录

    转自:http://www.cnblogs.com/fly-piglet/p/9836314.html 目的: 让看看这篇文章的的人能够知道:软件架构.软件的安装.配置.基本运维的操作.高可用测试.也 ...

  9. IDEA日常遇到问题汇总

    1. IDEA .gitignore文件不显示在项目栏中 解决方法,setting  >> Editor >> Code Style >> File Type &g ...

  10. BindingResult 作用原理

    controller代码 @RequestMapping("") public String index(@Valid User user , BindingResult bind ...