ノルム
ノルムは、クエリに対するドキュメントのスコアを計算するために、後でクエリ時に使用されるさまざまな正規化係数を保存します。
スコアリングに役立つ一方で、ノルムはかなりのディスクを必要とします(通常、インデックス内の各フィールドごとに1バイト程度、特定のフィールドを持たないドキュメントでも)。その結果、特定のフィールドでスコアリングが必要ない場合は、そのフィールドのノルムを無効にするべきです。特に、フィルタリングや集計のみに使用されるフィールドが該当します。
ノルムは、マッピングの更新APIを使用して既存のフィールドで無効にできます。
ノルムは、マッピングの更新APIを使用して無効にできます(ただし、後で再有効化することはできません)。
Python
resp = client.indices.put_mapping(
index="my-index-000001",
properties={
"title": {
"type": "text",
"norms": False
}
},
)
print(resp)
Ruby
response = client.indices.put_mapping(
index: 'my-index-000001',
body: {
properties: {
title: {
type: 'text',
norms: false
}
}
}
)
puts response
Js
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
}
}
}
ノルムは即座に削除されるわけではなく、新しいドキュメントのインデックスを続けると、古いセグメントが新しいセグメントにマージされる際に削除されます。ノルムが削除されたフィールドでのスコア計算は、一部のドキュメントがもはやノルムを持たない一方で、他のドキュメントはまだノルムを持っている可能性があるため、一貫性のない結果を返すことがあります。