elasticsearch的基础数据类型详细了解看: Elasticsearch数据类型及其属性 - 简书

学习过程中对于一些字段不太了解,所以查了一下

"cityCode":{"type": "text", //text 类型:当一个字段是要被全文搜索的,比如Email内容、产品描述,应该使用text类型"fields":{ //fields:可以对一个字段提供多种索引模式,同一个字段的值,一个分词,一个不分词"keyword":{"type":         "keyword", //keyword类型的字段只能通过精确值搜索到。"ignore_above": 256      //ignore_above超过256个字符的文本,将会被忽略,不被索引}}"analyzer": "pinyin_analyzer" //analyzer:指定分词器,默认分词器为standard analyzer"search_analyzer": "ik_smart" //search_analyzer:设置搜索时的分词器,默认跟analyzer是一致的,比如index时用standard+ngram,搜索时用standard用来完成自动提示功能}

比较重要的:analyzer、search_analyzer 是实现搜索的关键

analyzer 和 search_analyzer 的区别:
1,分词器 analyzer 的作用有二:
        一是 插入文档时,将 text 类型字段做分词,然后插入 倒排索引。
        二是 在查询时,先对 text  类型输入做分词, 再去倒排索引搜索。
2,如果想要“索引”和“查询”, 使用不同的分词器,那么 只需要在字段上 使用 search_analyzer。这样,索引只看 analyzer,查询就看 search_analyzer。

analyzer是分词器,可以看:Elasticsearch之analysis_花&败-CSDN博客

使用之前先了解一下分词的基本原理,各个分词的规则。上图是es的内置分词器(我现在没有用到英语查询,所以主要看汉语)

 standard分词器会将每个字进行分割,即包含“阿”、“莫”、“西”、“林” 的结果都会返回。会查出来一堆感冒灵、盘尼西林之类的。 其他的就不一一展示了,基本一样

我用到了拼音分词器和ik分词器,这两个需要下载

ik分词器算是一种进阶版,会进行智能一点的分词,同样是 阿莫西林,用ik分词会获取这样的数据

它会将“阿莫西林”分成“阿”、“莫西”、“西林”、“阿莫西林”,算是关键字的关键字。再搜索阿莫西林时就不会出现感冒灵、盘尼西林这种东西了。

拼音分词器可以实现用简拼搜索,或者不用汉字,用拼音搜索,例如搜索 “阿莫西林” ,可以用 “amxl” 、“a mo xi lin”或者 “amoxilin”

拼音分词器的源代码:GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin is used to do conversion between Chinese characters and Pinyin.https://github.com/medcl/elasticsearch-analysis-pinyin

里面有设置的参数和示例

**可选参数**

  • keep_first_letter当此选项启用时,例如:刘德华>ldh,默认值:真
  • keep_separate_first_letter当此选项启用时,将保持首字母分开,例如:刘德华>l,d,h,默认值:false,注意:由于术语过于频繁,查询结果可能过于模糊
  • limit_first_letter_length设置first_letter结果的最大长度,默认值:16
  • keep_full_pinyin当此选项启用时,例如:刘德华> [liu,de,hua],默认值:真
  • keep_joined_full_pinyin当此选项启用时,例如:刘德华> [liudehua],默认值:false
  • keep_none_chinese在结果中保留非中文字母或数字,默认值:true
  • keep_none_chinese_together将非中文字母放在一起,默认:true,例如:DJ音乐家 -> DJ,yin,yue,jia,当设置为时false,例如:DJ音乐家 -> D,J,yin,yue,jia,注意:keep_none_chinese应首先启用
  • keep_none_chinese_in_first_letter将非中文字母放在第一个字母中,例如:刘德华AT2016->ldhat2016,默认值:真
  • keep_none_chinese_in_joined_full_pinyin保持非中文字母的完整拼音,例如:刘德华2016->liudehua2016,默认值:false
  • none_chinese_pinyin_tokenize如果是拼音,将非中文字母拆分成单独的拼音项,默认:true,例如:liudehuaalibaba13zhuanghan -> liu,de,hua,a,li,ba,ba,13,zhuang,han,注意:keep_none_chinesekeep_none_chinese_together应首先启用
  • keep_original启用此选项时,也将保留原始输入,默认值:false
  • lowercase小写非中文字母,默认:true
  • trim_whitespace默认值:真
  • remove_duplicated_term启用此选项后,重复的术语将被删除以保存索引,例如:de的>de,默认值:false,注意:职位相关查询可能会受到影响
  • ignore_pinyin_offset在6.0之后,偏移被严格约束,不允许重叠标记,使用该参数,通过忽略偏移将允许重叠标记,请注意,所有与位置相关的查询或突出显示将变得不正确,您应该使用多个字段并为不同的查询目的指定不同的设置。如果需要偏移,请将其设置为false。默认值:true。

然后就是将他们两个组合起来使用,我参考了Elasticsearch之analysis_花&败-CSDN博客 和Elasticsearch拼音分词插件安装和使用_Sunny Feng的博客-CSDN博客 这两位的方法,最后就像这样:

 "settings": {"index": {"analysis": {"analyzer": {"pinyin_analyzer": {"tokenizer": "ik_max_word","filter":    "my_pinyin",},},"filter": {"my_pinyin": {"type":                       "pinyin","keep_separate_first_letter": false,"keep_full_pinyin":           true,"keep_joined_full_pinyin":    false,"keep_original":              true,"limit_first_letter_length":  20,"lowercase":                  true,"remove_duplicated_term":     true,},},},},}

在建表的时候把这一串加进去,同时在要执行搜索的字段下面加:

"productName":{"type":            "text","analyzer":        "pinyin_analyzer",
},

然后查看:

 然后就可以用拼音和汉字同时查了

elasticsearch 学习笔记3相关推荐

  1. elasticSearch学习笔记04-同义词,停用词,拼音,高亮,拼写纠错

    由于elasticSearch版本更新频繁,此笔记适用ES版本为 7.10.2 此笔记摘录自<Elasticsearch搜索引擎构建入门与实战>第一版 文中涉及代码适用于kibana开发工 ...

  2. ElasticSearch 学习笔记:Multi Search

    本文目录 1 简介 2 格式 3 header格式 4 body格式 5 返回格式 6 性能 7 相关文章 1 简介 批量查询接口(Multi Search API)允许在一次请求中执行多个查询操作, ...

  3. ElasticSearch学习笔记-ngram、中文拼音、简繁体搜索记录

    ElasticSearch版本:elasticsearch-7.3.0 ElasticSearch相关插件安装可以参考: ElasticSearch学习笔记-插件安装记录_人生偌只如初见的博客-CSD ...

  4. ElasticSearch学习笔记之十一 Anayle API和IK分词器

    ElasticSearch学习笔记之十一 Anayle API和IK分词器 Anayle API IK分词器 IK分词器版本支持 安装 下载或者编译 选择一 选择二 重启ElasticSearch I ...

  5. ElasticSearch学习笔记之二十一 指标聚合

    ElasticSearch学习笔记之二十一 指标聚合 指标聚合 Avg Aggregation Script Value Script Missing value Weighted Avg Aggre ...

  6. ElasticSearch学习笔记(8)· ES集群的搭建

    目录 十三.集群的实现 1.相关概念 集群(cluster) 节点(node) 分配和复制(shards & replicas) 2.快速搭建集群 3.安装head插件 十三.集群的实现 1. ...

  7. 黑马程序员--分布式搜索ElasticSearch学习笔记

    写在最前 黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列M ...

  8. ElasticSearch 学习笔记

    ElasticSearch (狂神说学习笔记) 1.ES 概述 es是一个开源的高扩展的分布式全文检索引擎, 2.环境安装 环境准备:jdk,你得先安装一个jdk. ES官网: https://www ...

  9. 2022-04-21 ElasticSearch 学习笔记

    Elasticsearch 通用能力 查看文档数量 GET http://192.168.1.243:9200/_count{"query": {"match_all&q ...

  10. ElasticSearch学习笔记记录5【图灵Fox】

    上述代码可以展示动态映射的概念. 学习视频: [2022最新版]ElasticSearch学习教程合集,从ElasticSearch入门到实战几乎包含你需要的所有操作_哔哩哔哩_bilibili

最新文章

  1. linux_OEL5.4_安装Oracle11g中文教程图解
  2. 用于 Outlook 2003 的删除重复邮件的插件(加载项)
  3. java 为什么需要常量池 1
  4. 利用计算机找出函数关系式,使用 CHOOSE 查找函数中类似于表的信息 - Excel公式函数运用大全...
  5. sql 整改措施 注入_SQL注入入侵防范措施
  6. Windows Server入门系列之十 注册表的基本使用
  7. SQLAlchemy schema.Table
  8. 大厂的 404 页面都长啥样?看到最后一个,我笑了。。。
  9. Sqlite Developer 3.8 破解
  10. Python基础数据类型:字符串,列表,元组,集合,字典用法总结
  11. swifty引用AFNetworking出现clang: error: linker command failed with exit code 1 (use -v to see invocation
  12. WCDMA中的CQI
  13. 实现一个简单的Database1
  14. 诗词格律[4] 古体诗
  15. 雷电网络(二):掌握雷电网络的特点 | 区块链技术博客
  16. Linux中删除文件夹和文件的命令(☆)
  17. 敏涵控股集团董事长刘敏:让世界了解敏涵 让敏涵走向世界
  18. 中国人寿如何基于容器搭建金融PaaS云平台 1
  19. 响应服务器554 5.7.1,554 5.7.1:中继访问被拒绝的centos后缀
  20. 《调色师手册:电影和视频调色专业技法(第2版)》——往返工作流程(Round-Trip workflows)...

热门文章

  1. 媒体播放器播放的方法步骤
  2. XDC+荣获2018年度中国IDC产业优秀第三方数据中心奖
  3. 当配置微信网页授权域名出现下载的文件不匹配的问题
  4. php composer 安装
  5. WRF示例运行(官方示例)
  6. Error: Unable to access jarfile xxx.jar
  7. mysql导入excel表异常_mysql导入excel表格数据时出错的解决
  8. 非常可乐(HDU-1495)
  9. 253. 会议室 II
  10. 搜狗输入法词库php词库怎么用,中州韵输入法导入搜狗词库(示例代码)