大数据利器Elasticsearch之全文本查询之match查询

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

本Elasticsearch相关文章的版本为:7.4.2

返回与提供的文本、数字、日期或布尔值匹配的文档。注意点:在匹配之前根据所查询的字段调用此字段的analyzer进行分析提供的文本。

match查询是执行全文搜索的标准查询,包括用于模糊匹配的选项。

创建测试数据

POST /match_test/_doc/1
{
  "my_text": "my Favorite food is cold porridge"
}

POST /match_test/_doc/2
{
  "my_text": "when it's cold my favorite food is porridge"
}
复制代码

match查询例子

请求数据:

POST /match_test/_search
{
  "query": {
    "match": {
      "my_text": "Favorite"
    }
  }
}
复制代码

相应数据:

{
  "took" : 0,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 2,
      "relation" : "eq"
    },
    "max_score" : 0.19363809,
    "hits" : [
      {
        "_index" : "match_test",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.19363809,
        "_source" : {
          "my_text" : "my Favorite food is cold porridge"
        }
      },
      {
        "_index" : "match_test",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 0.17225473,
        "_source" : {
          "my_text" : "when it's cold my favorite food is porridge"
        }
      }
    ]
  }
}
复制代码

因为match查询会对输入的数据进行分词处理,Favorite经过standard analyzer处理后就是favorite了,所以同时命中doc1和doc2。

match查询的参数

  • query

  • (必需)您希望在提供的 <field>.

    在执行搜索之前,match查询会分析任何提供的文本。这意味着match查询可以搜索text“文本数据类型”分析标记的字段,而不是精确的术语。

  • analyzer

  • (可选,字符串)[分析器]用于将query 值中的文本转换为标记。默认为field映射的[索引分析器]。如果没有映射分析器,则使用索引的默认分析器。

  • fuzziness

  • (可选,字符串)允许匹配的最大编辑距离。

  • max_expansions

  • (可选,整数)查询将扩展到的最大分词数。默认为50.

  • prefix_length

  • (可选,整数)用于模糊匹配的起始字符数保持不变。默认为0.

  • fuzzy_transpositions

  • (可选,布尔值)如果true,模糊匹配的编辑包括两个相邻字符的换位(ab → ba)。默认为true.

  • operator

  • (可选,字符串)用于解释query值中文本的布尔逻辑。有效值为:

    • OR (默认)

      例如,querycapital of Hungary被解释为capital OR of OR Hungary

    • AND

      例如,querycapital of Hungary被解释为capital AND of AND Hungary

  • minimum_should_match

  • (可选,字符串)必须与要返回的文档匹配的最小子句数。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享