index_options编辑

index_options 参数控制为搜索和高亮显示目的添加到倒排索引的信息。只有基于词项的字段类型(如 textkeyword)支持此配置。

该参数接受以下值之一。每个值都检索前面列出的值的信息。例如,freqs 包含 docspositions 包含 freqsdocs

docs
仅索引文档编号。可以回答这个问题:*此词项是否存在于此字段中?*
freqs
索引文档编号和词项频率。词项频率用于对重复词项的评分高于单个词项。
positions(默认)
索引文档编号、词项频率和词项位置(或顺序)。位置可用于 邻近或短语查询
offsets
索引文档编号、词项频率、位置以及开始和结束字符偏移量(将词项映射回原始字符串)。偏移量由 统一高亮器 使用,以加快高亮显示速度。
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    mappings: {
      properties: {
        text: {
          type: 'text',
          index_options: 'offsets'
        }
      }
    }
  }
)
puts response

response = client.index(
  index: 'my-index-000001',
  id: 1,
  body: {
    text: 'Quick brown fox'
  }
)
puts response

response = client.search(
  index: 'my-index-000001',
  body: {
    query: {
      match: {
        text: 'brown fox'
      }
    },
    highlight: {
      fields: {
        text: {}
      }
    }
  }
)
puts response
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "text": {
        "type": "text",
        "index_options": "offsets"
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "text": "Quick brown fox"
}

GET my-index-000001/_search
{
  "query": {
    "match": {
      "text": "brown fox"
    }
  },
  "highlight": {
    "fields": {
      "text": {} 
    }
  }
}

默认情况下,text 字段将使用 postings 进行高亮显示,因为 offsets 已编入索引。