Span 多词查询编辑

span_multi 查询允许您将 多词查询(通配符、模糊、前缀、范围或正则表达式查询之一)包装为 span 查询,以便可以嵌套它。例如:

response = client.search(
  body: {
    query: {
      span_multi: {
        match: {
          prefix: {
            'user.id' => {
              value: 'ki'
            }
          }
        }
      }
    }
  }
)
puts response
GET /_search
{
  "query": {
    "span_multi": {
      "match": {
        "prefix": { "user.id": { "value": "ki" } }
      }
    }
  }
}

也可以将提升与查询相关联

response = client.search(
  body: {
    query: {
      span_multi: {
        match: {
          prefix: {
            'user.id' => {
              value: 'ki',
              boost: 1.08
            }
          }
        }
      }
    }
  }
)
puts response
GET /_search
{
  "query": {
    "span_multi": {
      "match": {
        "prefix": { "user.id": { "value": "ki", "boost": 1.08 } }
      }
    }
  }
}

如果匹配查询的词条数量超过布尔查询限制(默认为 4096),则 span_multi 查询将遇到“命中太多子句”错误。为避免无限制扩展,您可以将多词查询的 rewrite 方法 设置为 top_terms_* 重写。或者,如果您仅在 prefix 查询上使用 span_multi,则可以激活 text 字段的 index_prefixes 字段选项。这会将该字段上的任何前缀查询重写为与索引前缀匹配的单个词条查询。