【发布时间】:2021-03-09 22:19:33
【问题描述】:
我使用Put Mapping API 添加了一个名为“title”的额外字段,然后尝试使用 GET index_name/type/_search 对我的索引进行正常搜索,但记录中没有显示任何带有“title”的字段。是因为该字段中没有内容吗?如果是这样,我如何获得没有内容的字段?
谢谢。
【问题讨论】:
标签: elasticsearch elasticsearch-mapping
我使用Put Mapping API 添加了一个名为“title”的额外字段,然后尝试使用 GET index_name/type/_search 对我的索引进行正常搜索,但记录中没有显示任何带有“title”的字段。是因为该字段中没有内容吗?如果是这样,我如何获得没有内容的字段?
谢谢。
【问题讨论】:
标签: elasticsearch elasticsearch-mapping
如果您启用了_source,elasticsearch 将返回您发送给它的字段值(无论是否为空)。如下例所示。
{
"title" : "" // see empty value
}
并且此 doc-id 上的 GET 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 是无模式的,并且不强制您必须强制索引字段。您还可以添加/删除字段,而无需将映射更新为无模式。
对于这个问题,即使你索引一个新文档,在映射中添加这个title字段后,并且不包含title字段,那么对于那个文档再次title字段将不会返回。
【讨论】:
title 字段,即使它在源代码中不存在。您应该只提一下,源永远不会被 ES 修改,并且会显示已发送的任何内容,而不是更多,而不是更少
_source,但title 字段未显示。此外,我已经索引了 100 个文档,之后我添加了 title 字段。
title 字段不会将该字段添加到所有现有文档源。如果您想在源中查看该字段,则需要使用空标题字段重新索引文档。