elasticsearch 学习笔记3
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结果的最大长度,默认值:16keep_full_pinyin
当此选项启用时,例如:刘德华
> [liu
,de
,hua
],默认值:真keep_joined_full_pinyin
当此选项启用时,例如:刘德华
> [liudehua
],默认值:falsekeep_none_chinese
在结果中保留非中文字母或数字,默认值:truekeep_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
,默认值:falsenone_chinese_pinyin_tokenize
如果是拼音,将非中文字母拆分成单独的拼音项,默认:true,例如:liudehuaalibaba13zhuanghan
->liu
,de
,hua
,a
,li
,ba
,ba
,13
,zhuang
,han
,注意:keep_none_chinese
和keep_none_chinese_together
应首先启用keep_original
启用此选项时,也将保留原始输入,默认值:falselowercase
小写非中文字母,默认:truetrim_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相关推荐
- elasticSearch学习笔记04-同义词,停用词,拼音,高亮,拼写纠错
由于elasticSearch版本更新频繁,此笔记适用ES版本为 7.10.2 此笔记摘录自<Elasticsearch搜索引擎构建入门与实战>第一版 文中涉及代码适用于kibana开发工 ...
- ElasticSearch 学习笔记:Multi Search
本文目录 1 简介 2 格式 3 header格式 4 body格式 5 返回格式 6 性能 7 相关文章 1 简介 批量查询接口(Multi Search API)允许在一次请求中执行多个查询操作, ...
- ElasticSearch学习笔记-ngram、中文拼音、简繁体搜索记录
ElasticSearch版本:elasticsearch-7.3.0 ElasticSearch相关插件安装可以参考: ElasticSearch学习笔记-插件安装记录_人生偌只如初见的博客-CSD ...
- ElasticSearch学习笔记之十一 Anayle API和IK分词器
ElasticSearch学习笔记之十一 Anayle API和IK分词器 Anayle API IK分词器 IK分词器版本支持 安装 下载或者编译 选择一 选择二 重启ElasticSearch I ...
- ElasticSearch学习笔记之二十一 指标聚合
ElasticSearch学习笔记之二十一 指标聚合 指标聚合 Avg Aggregation Script Value Script Missing value Weighted Avg Aggre ...
- ElasticSearch学习笔记(8)· ES集群的搭建
目录 十三.集群的实现 1.相关概念 集群(cluster) 节点(node) 分配和复制(shards & replicas) 2.快速搭建集群 3.安装head插件 十三.集群的实现 1. ...
- 黑马程序员--分布式搜索ElasticSearch学习笔记
写在最前 黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列M ...
- ElasticSearch 学习笔记
ElasticSearch (狂神说学习笔记) 1.ES 概述 es是一个开源的高扩展的分布式全文检索引擎, 2.环境安装 环境准备:jdk,你得先安装一个jdk. ES官网: https://www ...
- 2022-04-21 ElasticSearch 学习笔记
Elasticsearch 通用能力 查看文档数量 GET http://192.168.1.243:9200/_count{"query": {"match_all&q ...
- ElasticSearch学习笔记记录5【图灵Fox】
上述代码可以展示动态映射的概念. 学习视频: [2022最新版]ElasticSearch学习教程合集,从ElasticSearch入门到实战几乎包含你需要的所有操作_哔哩哔哩_bilibili
最新文章
- linux_OEL5.4_安装Oracle11g中文教程图解
- 用于 Outlook 2003 的删除重复邮件的插件(加载项)
- java 为什么需要常量池 1
- 利用计算机找出函数关系式,使用 CHOOSE 查找函数中类似于表的信息 - Excel公式函数运用大全...
- sql 整改措施 注入_SQL注入入侵防范措施
- Windows Server入门系列之十 注册表的基本使用
- SQLAlchemy schema.Table
- 大厂的 404 页面都长啥样?看到最后一个,我笑了。。。
- Sqlite Developer 3.8 破解
- Python基础数据类型:字符串,列表,元组,集合,字典用法总结
- swifty引用AFNetworking出现clang: error: linker command failed with exit code 1 (use -v to see invocation
- WCDMA中的CQI
- 实现一个简单的Database1
- 诗词格律[4] 古体诗
- 雷电网络(二):掌握雷电网络的特点 | 区块链技术博客
- Linux中删除文件夹和文件的命令(☆)
- 敏涵控股集团董事长刘敏:让世界了解敏涵 让敏涵走向世界
- 中国人寿如何基于容器搭建金融PaaS云平台 1
- 响应服务器554 5.7.1,554 5.7.1:中继访问被拒绝的centos后缀
- 《调色师手册:电影和视频调色专业技法(第2版)》——往返工作流程(Round-Trip workflows)...