Elasticsearch 不同的搜索类型之间的区别
1、match 轻量级搜索
GET /wymlib/_search
{
"query": {
"match": {
"title": "王阳明"
}
}
}
上面的查询匹配就会进行分词,比如"王阳明"会被ik分词器分为"王阳明" ,"阳明", "王","阳","明" 那么所有包含这些词中的一个或多个的文档就会被搜索出来。并且根据lucene的评分机制(TF/IDF)来进行评分。
2、match_phrase 短语搜索
GET /wymlib/_search
{
"query": {
"match_phrase": {
"title": "王阳明"
}
}
}
match_phrase要求只匹配上"王阳明"这个短语,完全匹配可能比较严,我们会希望有个可调节因子,少匹配一个也满足,那就需要使用到slop
{
"query": {
"match_phrase": {
"title" : {
"query" : "王阳明",
"slop" : 1
}
}
}
}
3、multi_match 多字段匹配
如果我们希望两个或两个以上的字段进行匹配,其中一个字段能匹配上就满足的话,使用multi_match
{
"query": {
"multi_match": {
"query": "王阳明第三卷",
"fields": [
"title",
"keywords",
"author"
]
}
}
}
multi_match中有三种类型即: best_fields 、 most_fields 和 cross_fields (最佳字段、多数字段、跨字段)
1) 我们希望完全匹配的文档占的评分比较高,则需要使用best_fields,multi_match默认是best_fields
{
"query": {
"multi_match": {
"query": "王阳明",
"fields": [
"title",
"yearAlias"
],
"minimum_should_match": "70%"
}
}
}
2) 我们希望越多字段匹配的文档评分越高,就要使用most_fields
{
"query": {
"multi_match": {
"query": "王阳明",
"type": "most_fields",
"fields": [
"title",
"keywords"
]
}
}
}
3) 我们会希望这个词条的分词词汇是分配到不同字段中的,那么就使用cross_fields
{
"query": {
"multi_match": {
"query": "王阳明",
"fields": [
"title",
"keywords"
],
"type": "cross_fields"
}
},
"highlight": {
"fields": {
"title": {
"pre_tags": ["<a>" ],
"post_tags": [ "</a>"]
},
"keywords": {
"pre_tags": ["<b>" ],
"post_tags": ["</b>" ]
}
}
}
}
上面查询语句中,包含了高亮显示结果属性:highligt
4、term 精确值查找
{
"query": {
"term": {
"title": "王阳明"
}
}
}
与match查询类似,但term是精确查找,代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇,但是 term 和 terms 是 必须包含(must contain) 操作,而不是必须精确相等(must equal exactly),当查询 jack 时,[jack] 和[jack,jone]两条数据都会被找到
Elasticsearch 不同的搜索类型之间的区别的更多相关文章
- mysql中几个日期时间类型之间的区别和使用
MySQL中有如下几个时间类型:date.time.datetime.timestamp.year MySQL数据类型 含义 date 只存 ...
- pandas数据类型(二)与numpy的str和object类型之间的区别
现象: Numpy区分了str和object类型,其中dtype(‘S’)和dtype(‘O’)分别对应于str和object. 然而,pandas缺乏这种区别 str和object类型都对应dtyp ...
- Elasticsearch搜索类型(query type)详解
关于我,邯郸人. 对这类话题感兴趣?欢迎发送邮件至donlianli@126.com 请支持原创http://www.cnblogs.com/donlianli/p/3857500.html e ...
- Elasticsearch之四种查询类型和搜索原理(博主推荐)
Elasticsearch Client发送搜索请求,某个索引库,一般默认是5个分片(shard). 它返回的时候,由各个分片汇总结果回来. 官网API https://www.elastic.co/ ...
- int和Integer之间的区别和联系
在工作中使用==埋下的坑这篇博文中,我们看到当使用基本类型的时候==是完全没有问题的,部分或者混合使用基本类型和装箱基本类型的时候,就可能出现问题了,那么我们可能会想基本类型和装箱基本类型 ...
- 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
http://www.cnblogs.com/fygh/archive/2011/10/18/2216166.html 1. char.varchar.nvarchar之间的区别(包括用途和空间占用) ...
- 列举两种不同类型的Java标识注释,并解释它们之间的区别。
列举两种不同类型的Java标识注释,并解释它们之间的区别.
- 企业大数据之Elasticsearch的搜索类型
下面的 ES基于版本(V2.3.4) ES之默认 1.默认自动发先同一局域网的所有集群节点 2.默认一个索引库会有5个分片,(分片越多,效率越好) 由于这两个默认,所以统一索引库的分片对分布在不同机器 ...
- Elasticsearch - 搜索类型与搜索位置
一.搜索类型: Elasticsearch同意用户选择其所希望的处理查询的方式. 由于存在一些不同的情形,对其使用不同的搜索类型才是合适的.为了控制查询的运行方式,我们能够在请求中使用search_t ...
随机推荐
- IT管理就这么管
随着信息系统的广泛应用,员工没有电脑就无法工作,企业离开信息系统就无法顺利开展业务.信息部作为企业的内部信息化部门,承担了包括软件开发.系统维 护.硬件维护的几乎所有IT相关任务,对保障公司业务系统的 ...
- centos7 安装 最新版本的docker
yum update # vim /etc/yum.repos.d/docker.repo //添加以下内容 [dockerrepo] name=Docker Repository baseurl=h ...
- [SLAM] 01. "Simultaneous Localization and Mapping"
本篇带你认识SLAM,形成客观的认识和体系 一.通过行业招聘初步了解SLAM 发信人: leecty (Terry), 信区: ParttimeJobPost标 题: 创业公司招SLAM 算法工程师发 ...
- Faulty Odometer(九进制数)
Faulty Odometer Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9301 Accepted: 5759 D ...
- script 里写 html 模版
js模版引擎(例如:template.js 或 handlebars.js)一般都用<script>标签来存放模版的内容 1)模版写在<script>标签和写在<div& ...
- iOS提交审核:您的 App 正在使用广告标识符 (IDFA)
本文转载至 https://mp.weixin.qq.com/s?__biz=MzA3NzM0NzkxMQ==&mid=401172721&idx=1&sn=a369cf1b ...
- c++学习笔记—单链表基本操作的实现
用c++语言实现的单链表基本操作,包括单链表的创建(包括头插法和尾插法建表).结点的查找.删除.排序.打印输出.逆置.链表销毁等基本操作. IDE:vs2013 具体实现代码如下: #include ...
- Linux 排错 误删 /etc/fstab 和 /boot怎样恢复
实验:在分区情况下,rm -rf /boot和/etc/fstab,恢复 首先我们查看一下/etc/fstab 里面放的是什么东西,从下图可以看出里面存放的是分区的挂载情况,删除分区将不能自动挂载 接 ...
- 批量更改数据库表架构(生成sql后直接执行!)
批量更改数据库表架构(生成sql后直接执行!) use my_test; --当前数据库 ), ), ), @NewSql VARCHAR(max), @Index INT; SET @SchemaO ...
- liunx trac 插件使用之GanttCalendarPlugin
http://trac-hacks.org/wiki/GanttCalendarPlugin官网上的说明很清楚,处理做几点提示,以做记录. 1.我的Trac版本是1.0.1 我使用了'B' Metho ...