架构师成长记_第八周_14_dsl搜索 - term, terms, match, match_phrase 等方式检索详解

Posted 流浪少年的梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构师成长记_第八周_14_dsl搜索 - term, terms, match, match_phrase 等方式检索详解相关的知识,希望对你有一定的参考价值。

dsl搜索-term 与 match

1. term

term 表示当一个用户输入单个词条的时候, 是不会进行分词搜索的, 即term 的词条为keyword.

测试如下:

在这里插入图片描述

{
    "query":{
        "term":{
            "desc":"慕课网"
        }
    },
    "_source": [
            "id",
            "nickname",
            "desc"
        ]
    
}

2. match

match 表示当一个用户输入一个词条的时候, 是会进行将输入词条进行分词搜索的, 即全文检索

测试如下:

在这里插入图片描述
在这里插入图片描述

PS: 1. match: operator (默认是 or)

or表示用户的搜索词条可以出现在不同的数据项中,
and 表示用户的搜索词条必须在同一条数据中出现, 没有先后顺序
minimum_should_match : 60 % 表示用户的搜索词条只进行匹配60%以上的内容, 即如果有用户输入8个关键词, 这匹配包含4个关键字(算出来后向下取整)以上的数据项; 也可以输入数字, 这匹配该数字以上的数据.
在这里插入图片描述

PS: 2. ids 根据ES的id进行检索

在这里插入图片描述

{
    "query":{
        "ids":{
            "type": "_doc",
            "values": [
                "1001",
                "1003",
                "1009"
            ]
        }
    },
    "_source": [
            "id",
            "nickname",
            "desc"
        ]
    
}

3. terms

terms 表示当一个用户输入多个词条的时候, 多个词条都会当作关键字进行检索.

测试如下:

在这里插入图片描述

{
    "query":{
        "terms":{
            "desc":["慕课网","学习","骚年"]
        }
    },
    "_source": [
            "id",
            "nickname",
            "desc"
        ]
    
}

4. match_phrase (严格的匹配, 具有顺序)

match_phrase 表示当用户去查询的时候, 查询的词条首先会进行分词, 分词后的词语必须包含在同一条数据中, 且分词后的词语具有先后顺序, 他们必须在数据中连续, 可以设置 slop 的值, 来表示他们直接允许跳过的最大的关键词的数量.

测试

在这里插入图片描述

{
    "query":{
        "match_phrase":{
            "desc":{
                "query": "大学 毕业"
            }
        }
    },
    "_source": [
            "id",
            "nickname",
            "desc"
        ]
    
}

PS: slop 测试

在这里插入图片描述

{
    "query":{
        "match_phrase":{
            "desc":{
                "query": "大学 研究生",
                "slop": 3
            }
        }
    }
}

5. multi_match (多重查询)

match 是单个查询.
multi_match是多重查询, 即可以在查询时候, 同时查询多个字段包含该信息的数据项, 比如慕课网可以在nickname中和desc中同时检索.
在这里插入图片描述

{
    "query":{
        "multi_match":{
            "query": "慕课网",
            "fields" : [
                "desc",
                "nickname"
            ]
        }
    },
    "_source": [
            "id",
            "nickname",
            "desc"
        ]
}

multi_match权重boost设置 ^10

在这里插入图片描述

以上是关于架构师成长记_第八周_14_dsl搜索 - term, terms, match, match_phrase 等方式检索详解的主要内容,如果未能解决你的问题,请参考以下文章

架构师成长记_第八周_12_dsl搜索-数据准备+入门语法

架构师成长记_第八周_13_dsl搜索-查询所有内容与分页查询

架构师成长记_第八周_13_dsl搜索-查询所有内容与分页查询

架构师成长记_第八周_13_dsl搜索-查询所有内容与分页查询

架构师成长记_第八周_16_dsl搜索-过滤器 post_filter, 排序 sort, 高亮 highlight

架构师成长记_第八周_18_ES- 滚动搜索