ノルム

ノルムは、クエリに対するドキュメントのスコアを計算するために、後でクエリ時に使用されるさまざまな正規化係数を保存します。

スコアリングに役立つ一方で、ノルムはかなりのディスクを必要とします(通常、インデックス内の各フィールドごとに1バイト程度、特定のフィールドを持たないドキュメントでも)。その結果、特定のフィールドでスコアリングが必要ない場合は、そのフィールドのノルムを無効にするべきです。特に、フィルタリングや集計のみに使用されるフィールドが該当します。

ノルムは、マッピングの更新APIを使用して既存のフィールドで無効にできます。

ノルムは、マッピングの更新APIを使用して無効にできます(ただし、後で再有効化することはできません)。

Python

  1. resp = client.indices.put_mapping(
  2. index="my-index-000001",
  3. properties={
  4. "title": {
  5. "type": "text",
  6. "norms": False
  7. }
  8. },
  9. )
  10. print(resp)

Ruby

  1. response = client.indices.put_mapping(
  2. index: 'my-index-000001',
  3. body: {
  4. properties: {
  5. title: {
  6. type: 'text',
  7. norms: false
  8. }
  9. }
  10. }
  11. )
  12. puts response

Js

  1. const response = await client.indices.putMapping({
  2. index: "my-index-000001",
  3. properties: {
  4. title: {
  5. type: "text",
  6. norms: false,
  7. },
  8. },
  9. });
  10. console.log(response);

コンソール

  1. PUT my-index-000001/_mapping
  2. {
  3. "properties": {
  4. "title": {
  5. "type": "text",
  6. "norms": false
  7. }
  8. }
  9. }

ノルムは即座に削除されるわけではなく、新しいドキュメントのインデックスを続けると、古いセグメントが新しいセグメントにマージされる際に削除されます。ノルムが削除されたフィールドでのスコア計算は、一部のドキュメントがもはやノルムを持たない一方で、他のドキュメントはまだノルムを持っている可能性があるため、一貫性のない結果を返すことがあります。