ES-ik分词器----常用映射类型

测试ik分词器:

 POST         http://localhost:9200/_analyze

  Body的JSON数据1:

{"text":"测试分词器,后面是测试内容:spring cloud实战","analyzer":"ik_max_word"}

  JSON测试数据2:

{"text":"测试分词器,后面是测试内容:spring cloud实战","analyzer":"ik_smart"}

  JSON测试数据3:

{"text":"中华人民共和国大会堂","analyzer":"ik_max_word"}

ik分词器的两种模式

  1:  ik_max_word            最细粒度拆分

  2:  ik_smart                   最粗粒度拆分

 

二、映射管理

  映射不能更新类型,只能删除映射,重新添加类型

   常用映射类型:

  (一:Text                                                                                              

    1.analyzer         指定分词器      有ik_max_word-最细粒度拆分和ik_smart-最粗粒度拆分               search_analyzer------搜索分词器  (一般粗颗粒度

    2.index    默认为true  进行索引,只有索引才可以从索引库搜索

           设置为false则不进行索引,将表明该字段不能被查询,如果查询会报错。但是可以被store。当该文档被查出来时,在_source中也会显示出该字段。

    3.store               默认false。store参数的功能和_source有一些相似。我们的数据默认都会在_source中存在。但我们也可以将数据store起来,不过大部分时候这个功能都很鸡肋。

            不过有一个例外,当我们使用copy_to参数时,copy_to的目标字段并不会在_source中存储,此时store就派上用场了。  

            copy_to 可以看看:https://blog.csdn.net/qq_21383435/article/details/118884992

    引用:https://elasticsearch.cn/article/6159

  (二:keyword关键字字段

    一般用来精确搜索匹配,比如手机号,身份证号等

  (三:date日期

    1.format    通过format设置日期类型

    例子:
    下边的设置允许date字段存储年月日时分秒、年月日及毫秒三种格式。  
{
  "properties": {
  "timestamp": {
  "type": "date",
  "format": "yyyy‐MM‐dd HH:mm:ss||yyyy‐MM‐dd"
    }
   }
}

  (四:数值类型

   

    建议:

      1、尽量选择范围小的类型,提高搜索效率
      2、对于浮点数尽量用比例因子,比如一个价格字段,单位为元,我们将比例因子设置为100这在ES中会按分片存储,映射如下: 
"price": {
    "type": "scaled_float",
    "scaling_factor": 100
}
      由于比例因子为100,如果我们输入的价格是23.45则ES中会将23.45乘以100存储在ES中。如果输入的价格是23.456,ES会将23.456乘以100再取一个接近原始值的数,得出2346。使用比例因子的好处是整型比浮点型更易压缩,节省磁盘空间。 

 

posted @ 2023-09-15 22:23  lksses  阅读(58)  评论(0编辑  收藏  举报