null_value

编辑

null 值无法被索引或搜索。当一个字段被设置为 null 时,(或者一个空数组或一个包含 null 值的数组),它会被视为该字段没有值。

null_value 参数允许你将显式的 null 值替换为指定的值,以便可以对其进行索引和搜索。例如:

resp = client.indices.create(
    index="my-index-000001",
    mappings={
        "properties": {
            "status_code": {
                "type": "keyword",
                "null_value": "NULL"
            }
        }
    },
)
print(resp)

resp1 = client.index(
    index="my-index-000001",
    id="1",
    document={
        "status_code": None
    },
)
print(resp1)

resp2 = client.index(
    index="my-index-000001",
    id="2",
    document={
        "status_code": []
    },
)
print(resp2)

resp3 = client.search(
    index="my-index-000001",
    query={
        "term": {
            "status_code": "NULL"
        }
    },
)
print(resp3)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    mappings: {
      properties: {
        status_code: {
          type: 'keyword',
          nil_value: 'NULL'
        }
      }
    }
  }
)
puts response

response = client.index(
  index: 'my-index-000001',
  id: 1,
  body: {
    status_code: nil
  }
)
puts response

response = client.index(
  index: 'my-index-000001',
  id: 2,
  body: {
    status_code: []
  }
)
puts response

response = client.search(
  index: 'my-index-000001',
  body: {
    query: {
      term: {
        status_code: 'NULL'
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  mappings: {
    properties: {
      status_code: {
        type: "keyword",
        null_value: "NULL",
      },
    },
  },
});
console.log(response);

const response1 = await client.index({
  index: "my-index-000001",
  id: 1,
  document: {
    status_code: null,
  },
});
console.log(response1);

const response2 = await client.index({
  index: "my-index-000001",
  id: 2,
  document: {
    status_code: [],
  },
});
console.log(response2);

const response3 = await client.search({
  index: "my-index-000001",
  query: {
    term: {
      status_code: "NULL",
    },
  },
});
console.log(response3);
PUT my-index-000001
{
  "mappings": {
    "properties": {
      "status_code": {
        "type":       "keyword",
        "null_value": "NULL" 
      }
    }
  }
}

PUT my-index-000001/_doc/1
{
  "status_code": null
}

PUT my-index-000001/_doc/2
{
  "status_code": [] 
}

GET my-index-000001/_search
{
  "query": {
    "term": {
      "status_code": "NULL" 
    }
  }
}

将显式的 null 值替换为词语 NULL

一个空数组不包含显式的 null,因此不会被 null_value 替换。

NULL 的查询会返回文档 1,但不会返回文档 2。

null_value 需要与字段的数据类型相同。 例如,一个 long 类型的字段不能有字符串类型的 null_value

null_value 仅影响数据的索引方式,它不会修改 _source 文档。