Match Query

Match Query

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

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

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

match

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

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

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

Fuzziness

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

  perfix_length和max_expansions可以在这种情况下被设置,以控制模糊过程。如果模糊选择被设置,则查询将使用top_terms_blended_freqs_${max_expansions}作为其重写的方法,fuzzy_rewrite参数允许控制查询将如何重写。

  模糊转换(ab->ba)默认被允许,但可以通过将fuzzy_transpositions设置为false来禁止。

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

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

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

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

转载于:https://www.cnblogs.com/benjiming/p/7084859.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值