Match Query

Match Query

  match查询接受文本/数字/日期,分析他们,并构件查询。例如:html

GET /_search
{
    "query": {
        "match" : {
            "message" : "this is a test"
        }
    }
}

  注意,message 是字段的名字,你可使用任意字段(包括_all)来代替。elasticsearch

match

  match查询是boolean类型的。这意味着分析所提供的文本,而且分析进程从提供的文本构造一个boolean查询。操做符能够被设置为or 或者 and 以控制boolean子句(默认为or)。能够经过使用minimun_should_match参数设置要匹配的可选should子句的最小数量。ide

  分析器能够设置控制那个分析器将对文本执行分析过程。它默认为字段显示映射定义或默认搜索分析器。测试

  能够设置lenient参数为true以忽略由于数据类型不匹配致使的异常,例如尝试在文本查询字符串中查询数字字段。默认为false。ui

Fuzziness

  fuzziness容许基于查询字段类型的模糊匹配。有关容许的设置,请看Fuzziness一节this

  perfix_length和max_expansions能够在这种状况下被设置,以控制模糊过程。若是模糊选择被设置,则查询将使用top_terms_blended_freqs_${max_expansions}做为其重写的方法,fuzzy_rewrite参数容许控制查询将如何重写。spa

  模糊转换(ab->ba)默认被容许,但能够经过将fuzzy_transpositions设置为false来禁止。code

  如下是提供附加参数的一个例子(注意结构略有变化,message是字段名称):htm

GET /_search
{
    "query": {
        "match" : {
            "message" : {
                "query" : "this is a test",
                "operator" : "and"
            }
        }
    }
}

Zero terms query

  若是使用的分析仪删除了像stop过滤器这样的查询中的全部令牌,默认的行为是根本不匹配任何文档。为了改变,可使用zero_terms_query选项,它接收none(默认)和all,而且符合match_all查询。blog

GET /_search
{
    "query": {
        "match" : {
            "message" : {
                "query" : "to be or not to be",
                "operator" : "and",
                "zero_terms_query": "all"
            }
        }
    }
}

Cutoff frequency

  匹配查询支持cutoff_frequency,容许指定决定或相对文档频率,其中高频率项被移动到可选子查询中,而且低频项之一在or操做匹配的状况或者全部的低频项在and操做符匹配的状况下才能得分。

  此查询容许在运行时动态处理stopwords,与领域无关,不须要停用文件。它能够防止对高频项进行评分/迭代,若是更高/更低的频率项与文档匹配,则仅考虑这些术语。而后,若是全部查询词都高于给定的cutoff_frequency,则查询将自动转换为纯链接(and)查询,以确保快速执行。

  若是在[0..1)范围内,则cutoff_frequency能够相对于文档总数,若是大于或等于1.0,cutoff_frequency能够是绝对的文档总数。

  下面是一个例子,显示了一个由stopwords exclusively组成的查询。

GET /_search
{
    "query": {
        "match" : {
            "message" : {
                "query" : "to be or not to be",
                "cutoff_frequency" : 0.001
            }
        }
    }
}

  重要:cutoff_frequency选项以per_shard_level运行。这意味着当你尝试使用低文档编号的测试索引时,你应该遵循相关性中的建议。

与query_string/field进行对比
查询匹配系列不会经过"query parsing"过程。它不支持字段名称前缀,通配符或者其它"高级"功能。因为这个缘由,它失败的机会很是小/不存在,而且它提供一个优秀的行为当它只分析和
运行该文本做为查询行为(一般是一个文本搜索框)。此外phrase_prefix类型能够提供一个很好的"即时"行为来自动加载搜索结果。

 

原文地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html

相关文章
相关标签/搜索