ElasticSearch:分布式全文搜索引擎
搜索采用倒排索引
首先对分词进行处理(比如:搜索华为手机,会将华为手机分为 华为、手机、华为手机)
分词之后进行匹配,把匹配度高的记录优先显示
ES底层采用Lucene,Lucene是一个提供全文搜索类库的核心工具包,同时Solr也是基于Lucene搭建。
ES与Solr比较
Solr利用Zookeeper进行分布式管理,而ES自身带有分布式协调管理功能
Solr支持更多格式的数据,ES只支持json格式
Solr提供的功能较多,ES注重本身核心功能实时搜索,搜索效率较快
安装ES
首先本地要安装jdk1.8,配置环境变量,否则ES启动不了
下载软件后将压缩包解压到没有中文没有空格的目录
修改es启动内存大小(默认1g),在config文件夹中打开jvm.options文件,22行(-Xms512m
-Xmx512m)
启动:在bin目录elasticsearch.bat文件启动。启动端口号9200,内部通信端口9300
此时在浏览器输入http://localhost:9200/就可以看到相关信息
安装客户端软件
安装Kibana要与ES版本一致
修改配置文件,在config文件夹
第二行server.port: 5601打开注释,28行elasticsearch.hosts: ["http://localhost:9200"]
启动:bin目录kibana.bat
http://localhost:5601
安装分词器
因为ES不能识别中文分词,所以安装IK
解压完后,复制文件到ES文件plugins文件夹下,之后重启上面2个软件,才会生效
测试
在kibana中点击Dev Tools,在Console中
GET /_analyze
{
"text": ["我是中国人"]
}
执行后,分词将每个汉字单个划分
使用分词器:方式一:粗粒度
GET /_analyze
{
"analyzer": "ik_smart",
"text": ["我是中国人"]
}
方式二:细粒度
GET /_analyze
{
"analyzer": "ik_max_word",
"text": ["我是中国人"]
}