您的位置:首页 > 其它

Elasticsearch——04全文搜索服务器_ES集成ik分词器&类型文档映射

2019-01-05 22:23 274 查看

开发十年,就只剩下这套架构体系了! >>>   

1.ES集成ik分词器

        lucene由于是jar工具包,如果要在使用lucene的环境下使用ik分词器,只需导入对应jar,做一些配置就行.

        以插件的方式集成ES服务器,客户端只需告诉我们某个字段要用这个分词器就行了。

步骤:

    ①服务端安装ik插件

    ②客户端端指定字段用插件

安装:

            1)下载源码:https://github.com/medcl/elasticsearch-analysis-ik

            2)maven打包:mvn package

            3)安装到es服务器

                       解压到es/plugins

            4)配置

            5)重启

 测试:

#测试ik分词器
POST _analyze
{
"analyzer":"ik_smart",
"text":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"
}

2.类型文档映射

        ES的文档映射(mapping)机制用于进行字段类型或分词器确认,将每个字段匹配为一种确定的数据类型。-就相当于在设计表的时候为字段指定类型.

    ES支持的数据类型:

① 基本字段类型
字符串:text(分词),keyword(不分词)   StringField(不分词文本),TextFiled(要分词文本)
text默认为全文文本,keyword默认为非全文文本
数字:long,integer,short,double,float
日期:date
逻辑:boolean
② 复杂数据类型
对象类型:object
数组类型:array
地理位置:geo_point,geo_shape

        ①默认映射

            ES在没有配置Mapping的情况下新增文档,ES会尝试对字段类型进行猜测,并动态生成字段和类型的映射关系。

        

    ②自定义映射

type

类型:基本数据类型,integer,long,date,boolean,keyword,text...

enable

是否启用:默认为true。 false:不能索引、不能搜索过滤,仅在_source中存储

头像路径

boost

权重提升倍数:用于查询时加权计算最终的得分。

format

格式:一般用于指定日期格式,如 yyyy-MM-dd HH:mm:ss.SSS

ignore_above

长度限制:长度大于该值的字符串将不会被索引和存储。

ignore_malformed

转换错误忽略:true代表当格式转换错误时,忽略该值,被忽略后不会被存储和索引。

include_in_all

是否将该字段值组合到_all中。

null_value

默认控制替换值。如空字符串替换为”NULL”,空数字替换为-1

store

是否存储:默认为false。true意义不大,因为_source中已有数据

index

索引模式:analyzed (索引并分词,text默认模式), not_analyzed (索引不分词,keyword默认模式),no(不索引)

analyzer

索引分词器:索引创建时使用的分词器,如ik_smart,ik_max_word,standard

search_analyzer

搜索分词器:搜索该字段的值时,传入的查询内容的分词器。

fields

多字段索引:当对该字段需要使用多种索引模式时使用。

如:城市搜索New York

"city": {

     "type": "text",

     "analyzer": "ik_smart",

     "fields": {

            "raw": {

                "type":  "keyword"

             }

     }

}

city分词

city.raw 不分词

那么以后搜索过滤和排序就可以使用city.raw字段名

注意:如果已经有数据,不能直接做映射,先删除掉,在添加映射,再添加数据.

    ③全局映射

默认映射-->全局映射->自定义映射

④优秀实践

  1. 有数据不做映射
  2. 根据优先级倒序来

步骤1:

  1. 删库
  2. 建库
  3. 做全局映射
  4. 自定义映射
  5. javaAPI做crud+查询
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: