ES analyzer和search_analyzer的比较
一.分析器主要有两种情况会被使用:
第一种是插入文档时,将text类型的字段做分词然后插入倒排索引,
第二种就是在查询时,先对要查询的text类型的输入做分词,再去倒排索引搜索
如果想要让 索引 和 查询 时使用不同的分词器,ElasticSearch也是能支持的,只需要在字段上加上search_analyzer参数
在索引时,只会去看字段有没有定义analyzer,有定义的话就用定义的,没定义就用ES预设的
在查询时,会先去看字段有没有定义search_analyzer,如果没有定义,就去看有没有analyzer,再没有定义,才会去使用ES预设的
二.几种搜索机制的比较
关键词 | keyword类型 | text类型 | 是否支持分词 |
term | 完全匹配 |
查询条件中关键词不会被分词,它必须 整个关键词和document中的某个 分词匹配,才能搜索到,多个分词时必须连续 ,顺序不能颠倒。
|
否 |
match | 完全匹配 |
match分词结果和text的分词结果有相同 的即可
|
是 |
match_phrase | 完全匹配 |
match_phrase的分词结果必须在text字段分词中都包含 ,而且顺序必须相同,而且必须都是连续 的。
|
是 |
query_string | 完全匹配 |
query_string中和match_string基本一样,区别时它不考虑顺序
|
是 |
测试:
在这里设置分本分词器为标准分词器,搜索分词器为ik,采用match搜索,因为ik分词器将共产党三个字分此后还是共产党,在标准分词器分过的文档中匹配不到,具体演示如下
//创建索引:
//创建索引
put /test10
{"mappings":{"properties":{"name":{"type":"text","store":true,"analyzer":"standard", "search_analyzer": "ik_smart"},"add": {"type": "text","store":true,"analyzer":"ik_smart","search_analyzer": "ik_smart"}}}
}//添加文档PUT /test10/_doc/1
{"name":"我是中国共产党","add":"我是中国共产党"
}// Ik分词器测试
GET _analyze
{"analyzer": "ik_smart","text": "共产党"}结果:
{"tokens" : [{"token" : "共产党","start_offset" : 0,"end_offset" : 3,"type" : "CN_WORD","position" : 0}]
}//标准分词器测试
GET _analyze
{"analyzer": "standard","text": "我是中国共产党"
}结果:
{"tokens" : [{"token" : "我","start_offset" : 0,"end_offset" : 1,"type" : "<IDEOGRAPHIC>","position" : 0},{"token" : "是","start_offset" : 1,"end_offset" : 2,"type" : "<IDEOGRAPHIC>","position" : 1},{"token" : "中","start_offset" : 2,"end_offset" : 3,"type" : "<IDEOGRAPHIC>","position" : 2},{"token" : "国","start_offset" : 3,"end_offset" : 4,"type" : "<IDEOGRAPHIC>","position" : 3},{"token" : "共","start_offset" : 4,"end_offset" : 5,"type" : "<IDEOGRAPHIC>","position" : 4},{"token" : "产","start_offset" : 5,"end_offset" : 6,"type" : "<IDEOGRAPHIC>","position" : 5},{"token" : "党","start_offset" : 6,"end_offset" : 7,"type" : "<IDEOGRAPHIC>","position" : 6}]
}//查询测试
GET /test10/_doc/_search
{"query":{"match":{"name": "共产党"}}
}结果:
{"took" : 1,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 0,"relation" : "eq"},"max_score" : null,"hits" : [ ]}
}
ES analyzer和search_analyzer的比较相关推荐
- ES Analyzer
ES Analyzer Analysis[分析,动词]表示将文本处理转换为一系列短语的过程,这个过程有两处会用到: 建立倒排索引:数据写入时,Analyzer[分词器,名词]会将数据解析成多个短语[英 ...
- es analyzer分词
参考:https://learnku.com/articles/35136 https://www.cnblogs.com/cjsblog/p/10171695.html https://blog.c ...
- ELK下es的分词器analyzer
转载链接 :es的分词器analyzerhttps://www.cnblogs.com/xiaobaozi-95/p/9328948.html 中文分词器 在lunix下执行下列命令,可以看到本来应该 ...
- ES之分析器(Analyzer)
ES-分词器(Analyzer) 把输入的文本块按照一定的策略进行分解,并建立倒排索引.在Lucene的架构中,这个过程由分析器(analyzer)完成. 主要组成 character filter: ...
- es springboot 不设置id_es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程详解
注意:适用于springboot或者springcloud框架 1.首先下载相关文件 2.然后需要去启动相关的启动文件 3.导入相关jar包(如果有相关的依赖包不需要导入)以及配置配置文件,并且写一个 ...
- doc es 中type_ES系列07:match_phrase与match_phrase_prefix query
昨天为大家介绍了ES系列06:ik分词+Full text queries 之match query.今天TeHero为大家分享 Full text queries 的 match_phrase qu ...
- Spring Boot操作ES进行各种高级查询(值得收藏)
作者 | 后青春期的Keats 来源 | http://cnblogs.com/keatsCoder/p/11341835.html SpringBoot整合ES 创建SpringBoot项目,导入 ...
- elasticsearch6.2.2安装中文分词插件IK analyzer
elasticsearch6.2.2安装中文分词插件IK analyzer 哎,装了一下午的ik终于装上了,发现自己真的是非常笨了,并且es重启过程中遇到了很多的问题,下面我将手把手教大家如何安装ik ...
- Logstash同步mysql一对多数据到ES(踩坑日记系列)
场景: Logstash .Kibana.ES版本:6.3.1. 使用Logstash从mysql同步用户和用户所有的宠物到ES中. 希望的格式: "register_name": ...
最新文章
- [ActionScript 3.0] AS向php发送二进制数据方法之——在URLRequest中构造HTTP协议发送数据...
- fdisk -l 找不到分区怎么办?想办法找到隐藏分区。
- 华为2018届校招技术岗笔试题及个人解答
- 剑指offer 二进制1中的个数
- 为什么停车类APP看似缺口巨大却没有成长起来?
- NVisionXR_iOS教程三 —— NVisionXR渲染一个立方体
- 机器学习算法在自动驾驶领域的应用大盘点!
- 登陆状态下加入购物车
- vue中的keep-alive
- 如何检查数组是否包含JavaScript中的对象?
- 强大的django-debug-toolbar,django项目性能分析工具
- LSGO软件技术团队2015~2016学年第三周(0914~0920)总结
- H3C交换机4核心节点IRF2虚拟化下检测机制
- Bootstrap 调用插件
- Sql Server 指定列的乘积
- linux opendir php,php目录遍历函数opendir用法实例
- 安大计算机学院李炜教授,李炜-北京航空航天大学计算机学院
- Missing Push Notification Entitlement警告-----以及解决方法
- Atitit 代码的艺术 attilax 艾提拉著作 1. 代码就像一首歌,一个文章,一个绘画	1 2. 代码就像文章	2 2.1. ,要流畅读出来,使用dsl 方法连模式	2 2.2. 段落划分与
- ubuntu mysql5.5编码_Ubuntu下MySQL5.5编码设置
热门文章
- AD620-仪表放大器-快速上手使用
- python tfidf特征变换_Python中的TfidfVectorizer参数解析
- Carla:ROS bridge installation for ROS 1
- 双非本科22届暑期实习,成功拿到B站、阿里实习offer
- 安装MATLAB时应如何选择产品组件
- EMC测试之静电放电抗扰度测试(ESD)
- 帮助中心在线制作工具推荐这4款,很不错哟!
- 事业单位招聘网上报名系统-适用于企事业单位/人力资源公司人事招考系统
- 全志平板电脑linux sunxi,全志A10平板电脑装配ubuntu 10.04LTS(与Android构建双系统)...
- java xstream_XStream 用法汇总