Docker版本ES+Kibana

前言:ES和Solr 

  • Solr 建立索引的时候搜索能力明显下降,实时搜索能力不高,ES实时搜索能力更强
  • Solr 需要通过ZooKeeper进行分布式,ES自己可以做分布式
  • Solr 支持多种数据格式,如JSON、XML、CSV,而ES只支持JSON
  • Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供
  • Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch
  • Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用

1.Docker安装ES

docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2

2.ES配置IK分词器和拼音分词器

1.进入容器
 docker exec -it es /bin/bash
2.下载IK分词器插件(注:看好版本号)
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.3.2/elasticsearch-analysis-ik-6.3.2.zip 
3.下载拼音分词器插件(注:看好版本号)
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.3.2/elasticsearch-analysis-pinyin-6.3.2.zip 

3.安装Kibana(注:Kibana的版本一定和ES的版本一致的)

 docker run -d --link es:elasticsearch -p 5601:5601 docker.elastic.co/kibana/kibana:6.3.2

4.ES基础查询语法的使用

 中文文档地址:https://es.xiaoleilu.com/010_Intro/05_What_is_it.html

 各种基础API查询,基于restful风格,可以参考一下官方网站的查询方式,自己手动操作一下。

5.扩容方式

       难点在于如何计算单台机器的承载容量,想必都应该听说过,在集群承载到一定量级时,查询速度会变慢,原因就在于无法将所有的数据都在加载到内存上面,有部分数据要存储在硬盘上,这样查询的时候就会出现多次从磁盘读取到内存中,这样多次IO就造成查询速度过慢,一般的面试题都会问,如果你用过ES,如果处理大容量数据查询慢的问题,这个问题的主旨在于第一,你有没有生产环境的经验,第二,你有没有考虑过设计的问题。当然,大多数人包括我在内,可能都没有大型实战项目的经验,所以,我们了解一下ES的存储原理,可以大概的计算一下单台机器能存储多少数据,ES在建立数据点的时候都应该经历过,primary shard和replica shard, shard是ES最小的存储单元,可以理解为单位,primary 是主存储,而replica 是副本,也就是备份,和primary存储一样的数据,但是replica 可以承载一定量的读取路由。所以,相当于你总机器的一半容量需要存储副本,所以计算的时候只能计算一半的容量,假如有三台机器,内存均是32G内存,总容量也就是32*3,可用容量也就是32*3/2,当然,一半的容量也不能全部存储慢,要留有一定的冗余内存,假设只有80%,可用容量也就是32*3/2*0.8。ok,现在可用容量已经计算完成,我们在存储document时,可以查询一下单条数据所占用的大小,如果是10kb的话,那么可以存储数据的容量已经显而易见。

      所以在设计初期我们已经可以计算出我们需要的机器以及内存,当然扩容的事情还没有说,扩容的话,一般就是水平添加机器,ES内部已经自动做了负载均衡,所以我们只需要在把node节点添加到集群中,然后添加一下replica shard的数量。

  "number_of_shards": "5",
  "number_of_replicas": "1",

6.如何设计index(TODO) 

Tips:ES6已经开始不推荐使用Type 而 ES7中已经取消了Type

7.SpringBoot中使用ES 

1.创建Maven项目

2.导入必要依赖

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

3.踩的小坑,项目里添加redis 的依赖,启动报错

转载自:elasticsearch5.6.1.集成springboot 遇到的坑_springboot集成elasticsearch版本5.6.1-CSDN博客

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值