Elasticsearch查询 - Match 查询

目录
  • Match Query
    • match查询示例
    • JavaAPI查询示例
    • match_phrase查询示例
      • match查询的常用参数
  • Match查询与Term查询的区别
  • 总结

Match Query

Match查询是一种基于全文本的查询方法,可以在一个或多个字段中搜索包含指定文本的文档。它会将查询字符串进行分词处理,然后对每个词进行匹配,从而找到所有匹配的文档。

Match查询有两种类型:match_phrase和match。match_phrase用于匹配完整的短语,而match只需匹配单个词条即可。下面我们将详细介绍这两种类型的查询。

match查询示例

GET /{index}/_search
{
  "query": {
    "match": {
      "title": {
        "query": "Elasticsearch Java"
      }
    }
  }
}

JavaAPI查询示例

SearchResponse response = client.prepareSearch("{index}")
        .setQuery(QueryBuilders.matchQuery("title", "Elasticsearch Java"))
        .get();

match_phrase查询示例

GET /{index}/_search
{
  "query": {
    "match_phrase": {
      "title": {
        "query": "Elasticsearch Java"
      }
    }
  }
}

match查询的常用参数

Match查询在查询时,可以设置一些参数来控制查询的行为。以下是一些常用的参数:

  • operator:控制匹配的逻辑运算符,默认为 OR,也可以设置为 AND。
  • analyzer:指定用于分析查询文本的分析器,若不指定则使用默认的分析器。
  • fuzziness:模糊匹配的距离,允许指定一个整数,指定允许的最大编辑距离,也可以指定一个百分比。
  • prefix_length:前缀长度,用于限制匹配的前缀长度。
  • max_expansions:最大扩展数量,允许指定匹配查询的最大扩展数量。
GET /my_index/_search
{
  "query": {
    "match": {
      "title": {
        "query": "Quick brown fox",
        "operator": "and",
        "analyzer": "standard",
        "fuzziness": "2",
        "prefix_length": "3",
        "max_expansions": "10"
      }
    }
  }
}

这个查询会在 my_index 索引中的 title 字段中查找包含 "Quick", "brown", "fox" 中任意一个单词的文档,并使用 "and" 逻辑运算符进行匹配。同时使用标准分析器进行文本分析,允许最大的编辑距离为 2,限制前缀长度为 3,最大扩展数量为 10。

Match查询与Term查询的区别

Match查询与Term查询的最大区别在于分词处理。Match查询会对查询字符串进行分词处理,而Term查询则不会。这意味着Match查询可以更容易地找到文档,因为它可以找到包含查询字符串中任何一个词的文档。但是,由于分词的存在,Match查询也可能会返回不相关的文档。

相比之下,Term查询是一种精确匹配的查询方法,只有在字段中完全匹配查询字符串时才会返回文档。这意味着它可以返回更准确的结果,但同时也会忽略一些文档。

总结

Match查询是一种基于全文本的查询方法,可以在一个或多个字段中搜索包含指定文本的文档。Match查询有两种类型:match_phrase和match。match_phrase用于匹配完整的短语,而match只需匹配单个词条即可。在实际使用中,需要根据具体的需求选择合适的查询类型。

以上就是Elasticsearch查询 - Match 查询的详细内容,更多关于Elasticsearch Match查询的资料请关注我们其它相关文章!

(0)

相关推荐

  • ElasticSearch事件查询语言EQL操作

    目录 前述 EQL优点 基础语法 数据准备 数据窗口搜索 统计符合条件的事件 事件序列 安全检测 数据准备 获取regsvr32事件的计数 检查命令行参数 检查恶意脚本加载 检查攻击成功可能性 前述 EQL 的全名是 Event Query Language (EQL).事件查询语言(EQL)是一种用于基于事件的时间序列数据(例如日志,指标和跟踪)的查询语言.在 Elastic Security 平台上,当输入有效的 EQL 时,查询会在数据节点上编译,执行查询并返回结果.这一切都快速.并行地发

  • Elasticsearch查询及聚合类DSL语句宝典示例详解

    目录 前言 一.match 二.match_phrase 三.mult_match 四.term 五.terms 六.range 七.wildcard 八.regexp 九.组合多查询(bool查询) 十.聚合 前言 随着使用es场景的增多,工作当中避免不了去使用es进行数据的存储,在数据存储到es当中以后就需要使用DSL语句进行数据的查询.聚合等操作,DSL对SE的意义就像SQL对MySQL一样,学会如何编写查询语句决定了后期是否能完全驾驭ES,所以至关重要,本专题主要是分享常用的DSL语句,

  • go语言实现Elasticsearches批量修改查询及发送MQ操作示例

    目录 update_by_query批量修改 索引添加字段 查询es发送MQ update_by_query批量修改 POST post-v1_1-2021.02,post-v1_1-2021.03,post-v1_1-2021.04/_update_by_query { "query": { "bool": { "must": [ { "term": { "join_field": { "val

  • Elasticsearch查询Range Query语法示例

    目录 Range Query 查询语法示例 查询数字范围 查询日期范围 查询字符串范围 注意 JavaAPI查询示例 总结 Range Query Range查询可以查询一个范围内的文档.它可以用来查询数值型字段.日期型字段.字符串型字段等等. 我们可以使用range查询来查询符合一定范围内的数据,如查询某个价格区间.某个时间段内的数据等等. 查询语法示例 GET /{index}/_search { "query": { "range": { "{fie

  • Elasticsearch percolate 查询示例详解

    目录 Elasticsearch 通常如何工作? 什么是 percolate 查询? Percolate 用例 Percolate query 实施 创建 percolate 索引: 如何将 Percolate 与你的应用程序集成 为什么要 percolate 而不是 watcher? Percolate query API Elasticsearch 通常如何工作? 我们将文档索引到 Elasticsearch 中并对其运行查询以获得满足提供的搜索条件的文档. 我们构造一个匹配或术语查询作为输

  • ElasticSearch学习之多条件组合查询验证及示例分析

    目录 多条件组合查询 bool constant_score 查询验证 & 分析 验证 分析 排序 默认排序 自定义排序 tips 单字段排序 多字段 scroll分页 初始化快照 & 快照保存10分钟 根据快照ID滚动查询 多条件组合查询 bool es中使用bool来控制多条件查询,bool查询支持以下参数: must:被查询的数据必须满足当前条件 mush_not:被查询的数据必须不满足当前条件 should:被查询的数据应该满足当前条件.should查询被用于修正查询结果的评分.需

  • Elasticsearch查询 - Match 查询

    目录 Match Query match查询示例 JavaAPI查询示例 match_phrase查询示例 match查询的常用参数 Match查询与Term查询的区别 总结 Match Query Match查询是一种基于全文本的查询方法,可以在一个或多个字段中搜索包含指定文本的文档.它会将查询字符串进行分词处理,然后对每个词进行匹配,从而找到所有匹配的文档. Match查询有两种类型:match_phrase和match.match_phrase用于匹配完整的短语,而match只需匹配单个词

  • Elasticsearch之基本查询及组合查询操作示例

    目录 Elasticsearch查询 一 基本查询 1.1 match查询 1.2 term查询 1.3 terms查询 1.4 控制查询的返回数量(分页) 1.5 match_all 查询 1.6 match_phrase查询 1.7 multi_match 1.8 指定返回的字段 1.9 sort 结果排序 1.10 range范围查询 1.11 wildcard查询 1.12 exists存在 二 组合查询 2.1 bool查询 2.2 简单过滤查询 2.3 查询多个值 2.4 bool过

  • Elasticsearch QueryBuilder简单查询实现解析

    elasticsearch中存储的全部文档 1.matchAllQuery() matchAllQuery()方法用来匹配全部文档 public class QueryTest { public static void main(String[] args) { //创建对象,设置集群名称和IP地址 ElasticsearchUtils es = new ElasticsearchUtils("im_shan", "localhost"); String index

  • Elasticsearch实现复合查询高亮结果功能

    一.Es的配置 实现es的全文检索功能的第一步,首先从与es进行连接开始,这里我使用的是es的5.x java api语法. public TransportClient esClient() throws UnknownHostException{ Settings settings = Settings.builder() .put("cluster.name", "my-application") //节点的名字 .put("client.trans

  • Java如何使用elasticsearch进行模糊查询

    这篇文章主要介绍了Java如何使用elasticsearch进行模糊查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用环境上篇文章本人已书写过,需要maven坐标,ES连接工具类的请看上一篇文章,以下是内容是笔者在真实项目中运用总结而产生,并写的是主要方法和思路,具体实现大家可以看后面文章,若其中有不适,请大家多多包涵 一.ES模糊查询 (一)不含中文模糊查询,适用于数字 SearchResponse searchResponse=nul

  • php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)

    php.mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳) //其中 video 是表名: //createtime 是字段: // //数据库time字段为时间戳 // //查询当天: $start = date('Y-m-d 00:00:00'); $end = date('Y-m-d H:i:s'); SELECT * FROM `table_name` WHERE `time` >= unix_timestamp( '$start' ) AND `time` <= uni

  • Yii框架参数化查询中IN查询只能查询一个的解决方法

    本文实例讲述了Yii框架参数化查询中IN查询只能查询一个的解决方法.分享给大家供大家参考,具体如下: 在yii框架中使用参数化进行IN查询时,结果不如所愿 $sql =<<<SQL SELECT id FROM tb WHERE id IN(:ids) SQL; $db = GeneralService::getSlaveDB(); $result = $db->createCommand($sql)->query([':ids' => '1013,1015,1017'

  • PR值查询 | PageRank 查询

    复制代码 代码如下: <?php /*     filename    :    http://www.computer98.com/pr.php     version        :    0.02     author        :    computer98.com     from        :    www.computer98.com     last modified:    2006-12-17 1:45     remark        :    转载请保留此信息

  • laravel 获取某个查询的查询SQL语句方法

    如下所示: DB::connection()->enableQueryLog();#开启执行日志 $count = DB::table('test') //执行查询 ->whereNull('deleted_at') ->where('id', '=', 3) ->where('Name', '=', '测试') ->count(); print_r(DB::getQueryLog()); //获取查询语句.参数和执行时间 Array ( [0] => Array (

  • MySql中子查询内查询示例详解

    西北望乡何处是,东南见月几回圆. 月亮又慢悠悠的挂上了天空,趁着睡前梦呓,我就带领各位可爱的读者们探索MySql最后的子查询部分. 说明:有些查询结果出来结果截图与题目要求不一样会出现多余的字段是为了方便展示结果的可读性.实际操作的读者可以删除SELECT后面多余的字段得到正确的结果. #WHERE或HAVING后面 #1.标量子查询(单行子查询) #2.列子查询(多行子查询) #3.行子查询(多列多行) #特点: # ①子查询放在小括号内 # ②子查询一般放在条件的右侧 # ③标量子查询:一般

随机推荐