Link Search Menu Expand Document Documentation Menu

索引前缀

通过 index_prefixes 映射参数,引擎会为文本字段中术语的起始部分生成额外的索引条目。启用后,它会根据可配置的最小和最大字符长度构建前缀索引。这可以通过让这些查询快速匹配预索引的术语前缀,显著提高前缀查询(例如自动完成即时搜索)的性能。

默认情况下,不执行前缀索引,以保持最小索引大小和快速索引操作。但是,如果您的应用程序受益于快速前缀匹配,启用此参数可以显著提高查询效率。

索引前缀配置

您可以将以下配置参数传递给 index_prefixes 映射参数

  • min_chars: 需要索引的前缀的最小长度。最小值为 0。默认值为 2
  • max_chars: 需要索引的前缀的最大长度。最大值为 20。默认值为 5

在字段上启用索引前缀

以下请求创建一个名为 products 的索引,其中 name 字段配置为构建一个长度介于 210 个字符之间的前缀索引

PUT /products
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "index_prefixes": {
          "min_chars": 2,
          "max_chars": 10
        }
      }
    }
  }
}

使用以下请求索引文档

PUT /products/_doc/1
{
  "name": "Ultra HD Television"
}

以下搜索请求显示了一个前缀查询,用于搜索 name 字段以 ul 开头的文档

POST /products/_search
{
  "query": {
    "prefix": {
      "name": "ul"
    }
  }
}

响应包含匹配的文档

{
  ...
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "products",
        "_id": "1",
        "_score": 1,
        "_source": {
          "name": "Ultra HD Television"
        }
      }
    ]
  }
}

使用默认参数的索引前缀

以下请求使用带有默认参数的 index_prefixes 创建一个名为 products_default 的索引

PUT /products_default
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "index_prefixes": {}
      }
    }
  }
}

剩余 350 字符

有问题?

想要贡献?