ElasticSearch搜索服务器与IK分词器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/happy_meng/article/details/78914841

ElasticSearch搜索服务器

1.java语言全文检索技术

这里写图片描述

这里写图片描述

2.ElasticSearch 安装配置使用入门
这里写图片描述

Window系统下载zip版本,linux系统下载tar版本
下载解压之后
这里写图片描述

bin 存放elasticSearch 运行命令
config 存放配置文件
data 存放数据
lib 存放elsticSearch运行依赖jar包
logs 存放日志
modules 存放elasticSearch模块
plugins 存放插件

运行elasticSearch/bin/elasticsearch.bat 文件
配置JAVA_HOME环境变量
这里写图片描述
访问 http://127.0.0.1:9200

3.ElasticSearch插件安装 es head

在下面的文件夹中运行cmd,执行
plugin.bat install mobz/elasticsearch-head
这里写图片描述
这里写图片描述

访问 http://localhost:9200/_plugin/head/

这里写图片描述

4.ElasticSearch基本操作入门

参考书籍: ElasticSearch服务器开发(第二版).pdf

这里写图片描述

全文检索:针对文本中的每个词,创建词条建立索引,进行搜索。
ElasticSearch 操作服务器上的数据,通过Rest API
这里写图片描述

5. ElasticSearch 基础 数据架构的主要概念

这里写图片描述
这里写图片描述
这里写图片描述

图解
这里写图片描述
索引对象:存储数据的表结构,任何搜索数据,存放在索引对象上
映射: 数据如何放到索引对象上,需要有一个映射配置,数据类型、是否存储、是否分词…
文档: 一条数据记录,存在索引对象上
文档类型: 一个索引对象 存放多种类型数据,数据用文档类型进行标识

编程:建立索引对象—建立映射—-存储数据【文档】—指定文档类型进行搜索数据【文档】

6.新建文档(自动创建索引和映射)
6.1需要新建maven项目
这里写图片描述

6.2基于maven的pom导入坐标依赖

 <dependencies>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>2.4.0</version>
    </dependency>
  </dependencies>

ElasticSearch2.4.0依赖lucene5.5.2版本
当直接在EalsticSearch建立文档对象时,如果索引不存在的,默认会自动创建,映射采用默认方式
ElasticSearch 服务默认端口9300
web 管理平台端口9200

6.3建立文档,自动创建索引

// 直接在EalsticSearch中建立文档,自动创建索引
@Test
public void demo1() throws Exception {
    // 创建连接搜索服务器对象
    Client client = TransportClient
        .builder().build().addTransportAddress(new InetSocketTransportAddress(InetAddress                       .getByName("127.0.0.1"), 9300));
    // 描述json数据
    /*
     * {id:xxx,title:xxx,content:xxx}
     */
    XContentBuilder builder = XContentFactory
                .jsonBuilder()
                .startObject()
                .field("id",1)
                .field("title","你好么么哒,ElasticSearch是一个基于Lucene的搜索服务器")
                .field("content","它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。")
                .endObject();
        //建立文档
    client.prepareIndex("blog1","article","1").setSource(builder).get();

        //关闭连接
        client.close();
    }

自动创建索引
这里写图片描述

自动创建索引映射
这里写图片描述
文档数据(type文档类型)
这里写图片描述

6.4搜索文档数据

查询数据 主要依赖QueryBuilder对象,可以通过QueryBuilders获取
boolQuery() 布尔查询,可以用来组合多个查询条件
fuzzyQuery() 相似度查询
matchAllQuery() 查询所有数据
regexpQuery() 正则表达式查询
termQuery() 词条查询
wildcardQuery() 模糊查询
这里写图片描述

6.5各种查询对象Query的使用

ElasticSearch 支持所有Lucene查询,并对其进行简化封装
TermQuery 词条查询
WildcardQuery 模糊查询
FuzzyQuery 相似度查询

6.5.1 ElasticSearch提供QueryBuilders.queryStringQuery(搜索内容)查询方法,对所有字段进行分词查询
这里写图片描述

6.5.2只想查询content里包含全文,使用wildcardQuery磨合查询 *任意字符串 ?任意单个字符
这里写图片描述

6.5.3 查询content词条为“搜索”内容,使用TermQuery

这里写图片描述

发现查询不到!!!,说明没有“搜索”这个词条

词条:就是将文本内容存入搜索服务器,搜索服务器进行分词内容

“ElasticSearch是一个基于Lucene的搜索服务器”
分词(好的):ElasticSearch、是、一个、基于、Lucene、的、搜索、服务器
默认分词(差):ElasticSearch、是、一、个、基、于、Lucene、的、搜、索、服、务、器

搜索“全面”能够查询到
这里写图片描述

7. IK分词器和ElasticSearch集成使用

ElasticSearch默认采用分词器,单个字分词,效果很差

这里写图片描述

下载 https://github.com/medcl/elasticsearch-analysis-ik/tree/2.x

7.1下载开源项目

这里写图片描述

7.2.打包ik分词器
mvn clean 清空
mvn package 打包
这里写图片描述

7.3进入target/release目录
将下列文件,拷贝到%es%/plugins/analysis-ik
这里写图片描述

7.4进入target/release/config 目录
将所有配置文件,复制%es%/config 下
这里写图片描述

7.5配置elasticsearch.yml
在该文件内容的后面配置
这里写图片描述

7.6重启es 可以看见ik分词器被加载
这里写图片描述

7.7访问

http://localhost:9200/_analyze?analyzer=ik&pretty=true&text=我是中国人

这里写图片描述

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭