一、简介
1、当初支流的搜索引擎大略就是:Lucene,Solr,ElasticSearch。
它们的索引建设都是依据倒排索引的形式生成索引,何谓倒排索引?(倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引办法,被用来存储在全文搜寻下某个单词在一个文档或者一组文档中的存储地位的映射。它是文档检索系统中最罕用的数据结构。)
2、Lucene是一个Java全文搜索引擎,齐全用Java编写。Lucene不是一个残缺的应用程序,而是一个代码库和API,复杂性较高。
3、Solr,ElasticSearch 都是基于Lucene。
4、Solr简介
Solr 是Apache下的一个顶级开源我的项目,采纳Java开发,它是基于Lucene的全文搜寻服务器。Solr提供了比Lucene更为丰盛的查询语言,同时实现了可配置、可扩大,并对索引、搜寻性能进行了优化 Solr能够独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现办法很简略,用 POST 办法向 Solr 服务器发送一个形容 Field 及其内容的 XML 文档,Solr依据xml文档增加、删除、更新索引 。Solr 搜寻只须要发送 HTTP GET 申请,而后对 Solr 返回Xml、json等格局的查问后果进行解析,组织页面布局。Solr不提供构建UI的性能,Solr提供了一个治理界面,通过治理界面能够查问Solr的配置和运行状况。 solr是基于lucene开发企业级搜寻服务器,实际上就是封装了lucene。
5、Elasticsearch简介
Elasticsearch是一个实时分布式搜寻和剖析引擎。它让你以前所未有的速度解决大数据成为可能。 它用于全文搜寻、结构化搜寻、剖析以及将这三者混合应用: 维基百科应用Elasticsearch提供全文搜寻并高亮关键字,以及输出实时搜寻(search-asyou-type)和搜寻纠错(did-you-mean)等搜寻倡议性能。 英国卫报应用Elasticsearch联合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时理解公众对新发表的文章的回应。 StackOverflow联合全文搜寻与地理位置查问,以及more-like-this性能来找到相干的问题和答案。 Github应用Elasticsearch检索1300亿行的代码。 然而Elasticsearch不仅用于大型企业,它还让像DataDog以及Klout这样的守业公司将最后的想法变成可扩大的解决方案。Elasticsearch能够在你的笔记本上运行,也能够在数以百计的服务器上解决PB级别的数据 。 Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有畛域,Lucene能够被认为是迄今为止最先进、性能最好的、性能最全的搜索引擎库。 然而,Lucene只是一个库。想要应用它,你必须应用Java来作为开发语言并将其间接集成到你的利用中,更蹩脚的是,Lucene非常复杂,你须要深刻理解检索的相干常识来了解它是如何工作的。 Elasticsearch也应用Java开发并应用Lucene作为其外围来实现所有索引和搜寻的性能,然而它的目标是通过简略的 RESTful API 来暗藏Lucene的复杂性,从而让全文搜寻变得简略。
6、Elasticsearch和Solr比拟
7、ElasticSearch vs Solr 总结
(1)es根本是开箱即用,非常简单。Solr装置稍微简单一丢丢
(2)Solr 利用 Zookeeper 进行分布式治理,而 Elasticsearch 本身带有分布式协调治理性能。
(3)Solr 反对更多格局的数据,比方JSON、XML、CSV,而 Elasticsearch 仅反对json文件格式。
(4)Solr 官网提供的性能更多,而 Elasticsearch 自身更重视于外围性能,高级性能多有第三方插件提供,例如图形化界面须要kibana敌对撑持
(5)
Solr 查问快,但更新索引时慢(即插入删除慢),用于电商等查问多的利用;
ES建设索引快(即查问慢),即实时性查问快,用于facebook新浪等搜寻。
Solr 是传统搜寻利用的无力解决方案,但 Elasticsearch 更实用于新兴的实时搜寻利用。
(6)Solr比拟成熟,有一个更大,更成熟的用户、开发和贡献者社区,而 Elasticsearch绝对开发维护者较少,更新太快,学习应用老本较高。
二、装置
1、装置elasticsearch kibana
https://www.elastic.co/cn/start 官网间接下载
2、装置elasticsearch head
2.1、办法一 github + vue环境 https://github.com/mobz/elasticsearch-head 前端可视化我的项目,须要vue环境,nodejs,python2 2.2、办法二 谷歌浏览器插件 elasticsearch-head 链接: https://pan.baidu.com/s/1SF66oKMULVCgcg0hCWAa6Q 明码: o4kd 2.3、申明 jdk1.8以上 最低要求
三、相熟目录
bin 启动文件config 配置文件 log4j2.properties 日志配置 elasticsearch.yml es自身配置文件 默认端口9200,跨域问题 jvm.options jvm配置文件-java虚拟机配置文件 jvm.options.d directory containing these lines: ###这里须要留神 启动所需内存大小,Linux或者服务器部署时候 ## -Xms4g ## -Xmx4glib 相干jar包,log4j,lucenemodules 功能模块plugins 插件 iklogs 日志
四、启动
1、装置即用 关上 bin/elasticsearch
2、http://localhost:9200/
3、返回释义
{ "name" : "AsuradeMacBook-Pro.local", "cluster_name" : "elasticsearch", //默认集群名称 "cluster_uuid" : "JEvgzCTrQFuAvk9MBkm6lA",//默认集群id "version" : { "number" : "7.13.1",//es版本 "build_flavor" : "default", "build_type" : "tar", "build_hash" : "9a7758028e4ea59bcab41c12004603c5a7dd84a9", "build_date" : "2021-05-28T17:40:59.346932922Z", "build_snapshot" : false, "lucene_version" : "8.8.2",//lucene版本 "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" //规范语音 相似hello word}
4、es可视化界面 es-head装置好;此处应用插件
5、如果应用es-head我的项目,存在跨域问题,解决配置es.yml
#跨域设置http.cors.enabled:truehttp.cors.allow-origin:"*"