ES-match_all、match和match_phrase的区别

这篇具有很好参考价值的文章主要介绍了ES-match_all、match和match_phrase的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.match_all 查询:

match_all 查询是一种简单的查询,匹配索引中的所有文档,无论文档中的字段内容如何。返回索引中的全部文档。eg:

{
  "query": {
    "match_all": {}
  }
}

2.match 查询:

match 查询使用分析器来分词和处理查询字符串,match很智能,会根据查询字段类型,采用不同的查询方式,比如:

  • 查询的字段是日期或者数值类型的话,它会将你需要查询的内容转换为日期或者数值对待;

  • 如果查询的内容是一个不能被分词的内容,match查询不会对指定的查询关键字进行分词;

  • 如果查询的类型是一个可以分词的内容,match会根据指定内容分词,到分词库中去匹配。

  • 由此看出match很智能,根据检索内容,能分就分,分不了就不分。

3.match_phrase 查询:

match_phrase 查询也用于在指定字段中搜索,但它要求查询字符串中的短语按照顺序完整匹配字段内容。不像 match 查询,match_phrase 查询不会分词查询字符串,而是将整个查询字符串作为一个短语进行匹配。

示例:

  • 创建索引

PUT /lfq_demo_personal
{
    "mappings": {
        "properties": {
            "name": {
                "type": "keyword"
            },
            "age": {
                "type": "integer"
            },
            "birthday": {
                "type": "date"
            },
            "hobby": {
                "type": "text"
            },
            "ipaddress":{
              "type":"ip"
            }
        }
    }
}
  • 添加数据

POST /lfq_demo_personal/_doc/2
{
  "name":"理遇",
  "age":24,
  "birthday":"1999-05-28T11:13:16+08:00",
  "hobby":"理遇热爱Java,喜欢打篮球",
  "ipaddress":"2606:2800:220:1:248:1893:25c8:1946"
}
  • matchmatch_all查询

hobby 为text类型,所以可分词,输入: "理遇喜欢打篮球",match可以匹配到,match_prase匹配不到,结果如下:

  • match_prase

match_all,elasticsearch,数据库,大数据

  • match

match_all,elasticsearch,数据库,大数据

总结来说:

  • match_all 查询用于匹配所有文档。

  • match 查询用于搜索包含指定词汇的文档,根据类型分词或者不分词。

  • match_phrase 查询用于完整匹配指定短语,不分词,按照短语顺序匹配。文章来源地址https://www.toymoban.com/news/detail-755802.html

到了这里,关于ES-match_all、match和match_phrase的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [match_phrase_prefix] query does not support [zero_terms_query] 问题解决

    @[TOC][match_phrase_prefix] query does not support [zero_terms_query] 问题解决 elasticsearch版本 :7.8 客户端elasticsearch : 7.12.1 报错代码 match_phrase_prefix在Elasticsearch 7.10版本后才支持zero_terms_query选项 https://github.com/elastic/elasticsearch/issues/58468

    2024年02月16日
    浏览(35)
  • keil5版本时“error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.”

    前言:在使用keil 5版本时,创建工程后稍不留神会出现问题“.Objectsproject.sct(7): error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.”     保姆教程!! 问题描述: 出现下类问题,无疑是指你的启动文件不止一个,例如“startup_stm32f10x_md.s”,就是创建工程时,

    2024年02月16日
    浏览(30)
  • 【ES6】Promise.all用法

    Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 上面代码中,Promise.all()方法接受一个数组作为参数,p1、p2、p3都是 Promise 实例,如果不是,就会先调用下面讲到的Promise.resolve方法,将参数转为 Promise 实例,再进一步处理。另外,Promise.all()方法的参数可以

    2024年02月09日
    浏览(27)
  • es中的match、term、text、keyword、bool

    总结一下es中的match、term、text、keyword、bool等。比如我想搜索一辆“红色奥迪车”: match:在匹配时会对所查找的进行分词,然后按分词匹配查找,用于模糊查询。结果会将包含“红色”或“奥迪”的车都找出来。 term:对进行查找,用于精确查找。只有名

    2024年02月11日
    浏览(35)
  • ElasticSearch系列 - SpringBoot整合ES之全文搜索匹配查询 match

    官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/index.html 权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search.html 1. 数据准备 官方测试数据下载地址:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip ,数据量很大,我们自己构造数据吧。 2. m

    2023年04月08日
    浏览(40)
  • ES中 minimum_should_match 的用法和误区

    写这篇文章是因为有个同学在群里发了这么一张截图,图中讲的两点关于``的描述,我看了一眼,两个都是错的。 目前互联网上的文章质量参差不齐,这也算是为了提高网络博客的质量进一己之力吧。 minimum_should_match 是ES组合查询中的一个常用参数,参数指定should子句返回的

    2023年04月09日
    浏览(26)
  • ES默认不按照下划线分词 ( multi_match)

    去ES官方文档页面 ES默认不按照下划线分词

    2024年02月12日
    浏览(26)
  • re中的match和search有什么区别?

    问题: 请说明以下re模块中的match和search有什么区别? re.match()与re.search()的区别 re.match()只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,结果返回None,而re.search()匹配整个字符串,直到找到一个匹配  re.search()扫描整个字符串并返回第一个成功的匹配结

    2024年02月13日
    浏览(33)
  • ES6 - promise.all和race方法的用法详解

    一、前言 谈谈你对Promise的理解? 答 :Promise用来解决异步回调问题,由于js是单线程的,很多异步操作都是依靠回调方法实现的,这种做法在逻辑比较复杂的回调嵌套中会相当复杂;也叫做回调地狱; promise用来将这种繁杂的做法简化,让程序更具备可读性,可维护性;pro

    2024年02月15日
    浏览(23)
  • ElasticSearch系列 - SpringBoot整合ES:多字段查询 multi_match

    1. 什么是 ElasticSearch 的 multi_match 查询? 有时用户需要在多个字段中查询,除了使用布尔查询封装多个match查询之外,可替代的方案是使用multi_match。可以在multi_match的query子句中组织数据匹配规则,并在fields子句中指定需要搜索的字段列表。 以下是一个示例multi-match查询

    2023年04月21日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包