norms

编辑

Norms 存储各种规范化因子,这些因子稍后在查询时用于计算文档相对于查询的分数。

虽然 norms 对于评分很有用,但它们也需要相当多的磁盘空间(通常在索引中每个文档每个字段一个字节的量级,即使对于没有此特定字段的文档也是如此)。因此,如果您不需要在特定字段上进行评分,则应在该字段上禁用 norms。特别是,对于仅用于过滤或聚合的字段,情况就是如此。

可以使用更新映射 API在现有字段上禁用 norms。

可以使用更新映射 API禁用 norms(但事后无法重新启用),如下所示

resp = client.indices.put_mapping(
    index="my-index-000001",
    properties={
        "title": {
            "type": "text",
            "norms": False
        }
    },
)
print(resp)
response = client.indices.put_mapping(
  index: 'my-index-000001',
  body: {
    properties: {
      title: {
        type: 'text',
        norms: false
      }
    }
  }
)
puts response
const response = await client.indices.putMapping({
  index: "my-index-000001",
  properties: {
    title: {
      type: "text",
      norms: false,
    },
  },
});
console.log(response);
PUT my-index-000001/_mapping
{
  "properties": {
    "title": {
      "type": "text",
      "norms": false
    }
  }
}

norms 不会立即删除,而是在您继续索引新文档时,旧段合并到新段中时删除。在已删除 norms 的字段上进行的任何分数计算都可能返回不一致的结果,因为某些文档将不再有 norms,而其他文档可能仍然有 norms。