一.Elasticsearch简介
Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。
它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。
Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂。
Elasticsearch和solr比较:
Elasticsearch优点:
可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上
将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;
开箱即用的,部署简单
全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理
Elasticsearch缺点:开发者少
solr优点:
Solr有一个更大、更成熟的用户、开发和贡献者社区。
支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及 JSON、XML、CSV 等纯文本格式。
Solr比较成熟、稳定。
不考虑建索引的同时进行搜索,速度更快。
Solr缺点:
建立索引时,搜索效率下降,实时索引搜索效率不高。
Elasticsearch的特点:
(1)可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公
司;也可以运行在单机上
(2)将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;
(3)开箱即用的,部署简单
(4)全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理
Elasticearch的体系结构:
索引(index)
Elasticsearch里的索引概念是名词而不是动词,在elasticsearch里它支持多个索引。有点类似于关系数据库里面每一个服务器可以支持多个数据库是一个道理,在每一索引下面又可以支持多种类型,这又类似于关系数据库里面的一个数据库可以有多张表一样。但是本质上和关系数据库还是有很大的区别,我们这里暂时可以这么理解。
映射(mapping)
在有关全文搜索基础知识部分,我们提到了分析的过程:为建索引和搜索准备输入文本
文档类型(type)
在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序
可以保存文章和评论。文档类型让我们轻易地区分单个索引中的不同对象
文档(document)
存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文
档相当于数据库表中的一行记录。
二.Head插件的安装与使用
1.执行命令创建head
docker run -di --name=tensquareEshead -p 9100:9100 mobz/elasticsearch-head:5
2.出现的问题,启动后无法连接es服务器,我们没有设置es的配置文件,设置跨域访问
如何的解决问题的:进入容器内部
docker exec -it tensquareES /bin/bash
执行命令apt-get update
执行命令安装: apt-get install -y vim 安装vim
进入es的目录下conf配置文件目录打开 elasticsearch.yml配置文件中增加以下配置,添加如下
http.cors.enabled: true #允许跨域访问
http.cors.allow-origin: "*" #指定允许访问的ip,*代表所有ip均可访问
重新启动容器后测试
三.IK分词器的使用
windows环境下安装:
1、找到资料中ik分词器压缩包,将压缩包解压,将解压文件夹拷贝到/ES_HOME/plugins/下
2、重启ElasticSearch服务-
3、两种分词策略:ik_smart ik_max_word
4、扩展自定义字典。新建自定义词典文件 xx.dic 添加扩展词组 在ik分词器配置文件中加载
docker环境下安装:
1、将ik分词器压缩包上传到服务器、解压、重命名 mv
2、目标:宿主机跟容器进行文件拷贝
**在宿主机执行命令:docker cp 源文件 目标文件夹
**进入容器获取es存放插件目录:1a4bf55d4c9d:/usr/share/elasticsearch/plugins
注意出现问题: 无法安装vim命令
如何解决: 用docker cp 源 目的 这个命令docker 的拷贝命令
可以从容器拷贝到宿主机
也可以从宿主机拷贝到容器
就是注意两个目的源的位置
3aa7ac37d605:/usr/share/elasticsearch/config
3aa7ac37d605:/usr/share/elasticsearch/plugins
最小切分:
http://192.168.72.135:9200/_analyze?analyzer=ik_smart&pretty=true&text=%E6%88%91%E6%98%AF%E7%A8%8B%E5%BA%8F%E5%91%98
最大切分:
http://192.168.72.135:9200/_analyze?analyzer=ik_max_word&pretty=true&text=%E6%88%91%E6%98%AF%E7%A8%8B%E5%BA%8F%E5%91%98
elasticsearch和solr的搜索比较:
https://www.cnblogs.com/chowmin/articles/4629220.html
四.搜索微服务的开发
需求分析:完成首页的搜索功能,可以通过标题或者内容进行进行搜索
创建项目tensquare_search
编写启动类
pojo编写
@Document(indexName = "tensquare