elasticsearch - ElasticSearch,如果在其他对象中写入对象,性能会下降吗?
问题描述
我有一个对象列表,例如
{
"type1_a":".... value ....",
"type1_b":".... value ....",
"type1_c":".... value ....",
"type1_d":".... value ....",
"type1_.....":".... value ....",
"type2_a":".... value ....",
"type3_b":".... value ....",
"type4_c":".... value ....",
"type5_d":".... value ....",
"type6_.....":".... value ...."
}
但我正在考虑将对象作为
{
"type1": {
"a": ".... value ...."
"b": ".... value ...."
"etc..": ".... value ...."
},
"type2": {
"a": ".... value ...."
"b": ".... value ...."
"etc..": ".... value ...."
}
}
我有大约 100 个这些属性,还有几 TB 的数据(相当大的索引)。
我想知道弹性搜索引擎在理论上是否以较低效率的方式处理嵌套的内容与第一级的内容相比。
解决方案
是的,Elasticsearch 中的嵌套数据类型绝对是非常昂贵的,而且您确实有一个非常大的索引。请阅读Go-Jek 工程中关于嵌套文档的问题以及他们如何优化它的非常有趣的博客。
简而言之,如果性能对您来说是一个关键方面,并且如果您可以避免嵌套数据类型,那么请在您的环境/设置中对其进行基准测试,而不仅仅是做出一些最终决定。
推荐阅读
- android - Kivy 低延迟音频(也在 Android 上)
- python - 使用多个语句创建具有列表理解的列表
- git - 当`file`是`dir`中的唯一文件时,为什么“git rm dir/file”也会删除`dir`?
- python - 如何在 python 中编码 JWT
- r - R:计算一个因子在data.frame中与group by结合的比例
- r - R函数来识别结果是否是来自round()的整数
- mysql - JSON 列上的通配符查询
- java - MenuInflator 导致应用程序在某些手机中崩溃(Tecno、Redmi Note 4)
- python - Python - 压缩文件的问题
- python - ValueError:形状 1 和 2 不兼容