【发布时间】:2019-08-12 22:52:43
【问题描述】:
我有两个选项可以将 JSON 存储到 Elasticsearch 中,表示为对象字段(在第一个映射中提到)和序列化并存储为文本(在第二个映射中提到)。将非索引字段作为对象而不是文本存储到 Elasticsearch 中是否有任何额外开销?
第一次映射:
{
"properties": {
"user_json": {
"enabled": false,
"type": "object"
}
}
二次映射:
{ "properties":
{
"user_json": {
"enabled": false,
"type": "text"
}
}
任何帮助将不胜感激。
【问题讨论】:
-
text和object是两种完全不同的类型。如果您希望存储序列化的 JSON 数据,则应避免使用text并改用keyword,因为您可能不会在该数据中进行搜索。 -
@Val 好主意。但是大 JSON 是有可能的。存储对象与关键字有什么优势吗?
-
enabled只能在object字段上设置。如果您需要从_source检索该 JSON,这很有用,但您将无法搜索任何嵌套字段。keyword仅在您想将该 JSON 存储为序列化 JSON 文本时才有意义。所以这取决于你的用例。查看更多信息here -
我不想在这个字段上搜索只存储参考。
标签: elasticsearch lucene