ElasticSearch 概述
Elasticsearch 是一个分布式
的开源搜索
和分析引擎
,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成
,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API
、分布式特性
、速度
和可扩展性
而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。人们通常将 Elastic Stack 称为 ELK Stack(代指 Elasticsearch、Logstash 和 Kibana),目前 Elastic Stack 包括一系列丰富的轻量型数据采集代理,这些代理统称为 Beats,可用来向 Elasticsearch 发送数据。
ElasticSearch 与 Solr 的区别
Solr 简介
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
ElasticSearch 对比 Solr
参考:https://www.cnblogs.com/fosilzhou/articles/4629220.html
当单纯的对已有数据进行搜索
时,Solr更快。
当实时建立索引
时, Solr会产生io阻塞,查询性能较差, Elasticsearch具有明显的优势
。
随着数据量的增加
,Solr的搜索效率会变得更低,而Elasticsearch却没有明显的变化。
综上所述,Solr的架构不适合实时搜索的应用。
Elasticsearch 与 Solr 的比较总结
- 二者安装都很简单;
- Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
- Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
- Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
- Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
使用 Docker 安装 ElasticSearch
注意:ElasticSearch 最低要求 JDK 版本为 1.8
使用 Docker 拉取 ElasticSearch 最新版本 7.6.2
docker pull elasticsearch:7.6.2
根据 Docker ElasticSearch Description 编写 docker-compose.yml
文件
version: '3.1'
services:
elasticsearch:
image: elasticsearch:7.6.2
container_name: elasticsearch
environment:
discovery.type: single-node
ports:
- 9200:9200
- 9300:9300
启动 ElasticSearch
touyel@server:/usr/local/docker/elasticsearch$ docker-compose up -d
Creating network "elasticsearch_default" with the default driver
Recreating elasticsearch ... done
访问 ip:9200:
安装完成!
安装 kibana
Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。
kibana 需要与 ES 的版本一致。
拉取 kibana 镜像
docker pull kibana:7.6.2
编辑 docker-compose.yml
version: '3.1'
services:
elasticsearch:
image: elasticsearch:7.6.2
container_name: elasticsearch
restart: always
environment:
discovery.type: single-node
ports:
- 9200:9200
- 9300:9300
kibana:
image: kibana:7.6.2
container_name: kibana
environment:
ELASTICSEARCH_URL: "127.0.0.1:9200"
I18N_LOCALE: "zh-CN"
ports:
- 5601:5601
访问 192.168.59.130:5601
使用 kibana 的开发工具