Index options(索引选项)

index_options 映射参数控制文本字段在倒排索引中存储的详细程度。此设置直接影响索引大小以及可用于评分、短语匹配和高亮显示的功能。

index_options 参数具有以下有效值。

存储内容 描述
docs 仅文档 ID 仅索引词项在一组文档中的存在性。不存储频率或位置。最小化索引大小;适用于简单的存在性检查。
freqs 文档 ID + 词频 添加词频信息。有助于提高相关性评分,但不支持短语或邻近查询。
positions 文档 ID + 词频 + 词项位置 包含词项在文档中的顺序和位置。短语查询和邻近搜索必需。
offsets 文档 ID + 词频 + 词项位置 + 字符偏移量 最详细。为匹配的词项添加字符偏移量。有助于高亮显示,但会增加存储大小。

默认情况下,文本字段使用 positions 选项进行索引,以平衡功能和索引大小。

示例:在字段上设置 index_options

创建一个名为 products 的索引,其中 description 字段对 index_options 使用 positions 设置:

PUT /products
{
  "mappings": {
    "properties": {
      "description": {
        "type": "text",
        "index_options": "positions"
      }
    }
  }
}

description 字段中索引一个包含内容的文档:

PUT /products/_doc/1
{
  "description": "This is a sample product description with several terms."
}

针对 description 字段运行短语查询:

POST /products/_search
{
  "query": {
    "match_phrase": {
      "description": "product description"
    }
  }
}

短语查询成功匹配文档,展示了 index_options 中的 positions 设置如何在 description 字段内实现准确的短语匹配:

{
  ...
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 0.5753642,
    "hits": [
      {
        "_index": "products",
        "_id": "1",
        "_score": 0.5753642,
        "_source": {
          "description": "This is a sample product description with several terms."
        }
      }
    ]
  }
}