Elasticsearch 中不直接显示空白字段?

Empty fields aren't shown directly in Elasticsearch?

我用 Put Mapping API 添加了一个名为“title”的额外字段,然后尝试使用 GET index_name/type/_search 在我的索引上进行正常搜索,但记录没有显示任何带有“title”的字段在里面。是因为该字段没有内容吗?如果是这样,我如何获得没有内容的字段?

谢谢。

如果您启用了 _source,elasticsearch 将 return 您发送给它的字段值(无论是否为空)。如下例所示。

{
  "title" : "" // see empty value
}

并在响应

下方的此文档 ID return 上获取 API
{
    "_index": "newso",
    "_type": "_doc",
    "_id": "1",
    "_version": 2,
    "_seq_no": 1,
    "_primary_term": 1,
    "found": true,
    "_source": {
        "title": "" // same value is returned in response.
    }
}

编辑:- 基于@Val 评论, 如果你想在旧文档中找到这个新添加的 title 字段,你没有索引这个字段,你将无法找到它,因为 elasticsearch 是无模式的,并且不强制你必须强制索引一个字段。您也可以 add/remove 字段而不更新映射,因为它是无模式的。

对于这个问题,即使你索引一个新文档,在映射中添加这个 title 字段后,不包括 title 字段,然后再次为该文档 title 字段将不会 returned。