前缀查询

前缀查询 #

使用 prefix 查询可以搜索以特定前缀开头的词。例如,以下查询会搜索 speaker 字段包含以 KING H 开头的词的文档。

GET shakespeare/_search
{
  "query": {
    "prefix": {
      "speaker": "KING H"
    }
  }
}

为了提供参数,您可以使用与前面的查询相同的形式,并使用以下扩展语法

GET shakespeare/_search
{
  "query": {
    "prefix": {
      "speaker": {
        "value": "KING H"
      }
    }
  }
}

参数说明 #

查询接受字段名称( <field> )作为顶级参数:

GET _search
{
  "query": {
    "prefix": {
      "<field>": {
        "value": "sample",
        ...
      }
    }
  }
}

<field> 接受以下参数。除了 value 之外,所有参数都是可选的。

参数数据类型描述
valueString在由 指定的字段中搜索的词项。
boostFloat一个浮点值,用于指定该字段对相关性评分的权重。值大于 1.0 会增加字段的相关性。值在 0.0 到 1.0 之间会降低字段的相关性。默认值为 1.0。
case_insensitiveBoolean如果设置为 true ,则允许对字段索引值进行不区分大小写的匹配。默认值为 false (大小写敏感性由字段的映射决定)。
rewriteString决定 Easysearch 如何重写和评分多词查询。有效值为 constant_scorescoring_booleanconstant_score_booleantop_terms_Ntop_terms_boost_Ntop_terms_blended_freqs_N 。默认值为 constant_score

如果将 search.allow_expensive_queries 设置为 false ,则不会执行前缀查询。如果启用了 index_prefixes ,则会忽略 search.allow_expensive_queries 设置,并构建并运行一个优化后的查询。