elasticsearch - 可以将弹性中的字段映射限制设置为 50k 吗?
问题描述
我的应用程序是一个调查创建应用程序,用户可以在其中创建包含许多不同类型问题的调查。然后可以将每个调查共享给任意数量的人,他们的回复记录如下...... 1 个回复看起来像这样:
{
"id" : 256, // submission id
"timeTaken" : "39.00",
"startTime" : "2020-07-19T05:37:38.873Z",
"state" : "COMPLETED",
"completedTime" : "2020-07-19T05:38:17.873Z",
"deviceType" : "COMPUTER",
"ip" : null,
"account_id" : 2,
"channel_id" : 48,
"contact_id" : null,
"survey_id" : 10,
"trigger_id" : 93,
"trigger_contact_id" : null,
"locked" : false,
"location" : null,
"language" : null,
"submission_id" : 256,
"question_90" : {
"skipped" : false,
"answer_choices" : [ 79 ]
},
"question_122" : {
"skipped" : false,
"otherChoice" : null,
"answer_choices" : [ 115, 113, 111, 110, 114 ]
},
"question_106" : {
"skipped" : false,
"answer_choices" : [ 85 ]
},
"question_120" : {
"answer_txt": "Great service",
"skipped" : false
},
"question_118" : {
"answer_txt": "Hello people",
"skipped" : false
},
"question_121" : {
"skipped" : false,
"answer_date" : "2020-06-04T20:01:49.783Z",
"answer_timezone" : 330
},
"question_108" : {
"skipped" : false,
"answer_int" : "93"
},
"question_105" : {
"skipped" : false,
"answer_string" : "+1 202 9932219"
},
"question_93" : {
"skipped" : false,
"answer_string" : "Kyra60@yahoo.com"
},
"question_117" : {
"skipped" : false
},
"question_92" : {
"skipped" : false,
"answer_txt" : "composite"
},
"question_107" : {
"skipped" : false,
"answer_bool" : true
},
}
我需要这里的所有字段进行分析和查询。但大多数情况下,doc 字段限制超过了 elasticsearch 默认限制 1000。我很确定它的性能为 1000,但我如何才能尊重这一点并插入可能具有 20k + 字段的文档。
对此有何见解?
解决方案
你绝对不应该去映射爆炸方向。密钥存储在内存中,因此您将过度消耗 RAM 和性能不佳。你有它记录在这里:elastic.co/blog/found-crash-elasticsearch#mapping-explosion
通过使用嵌套数据类型,您可以轻松地用很少数量的键映射您的答案。
"answers": [
{
"question_id": 122,
"skipped" : false,
"otherChoice" : null,
"answer_choices" : [ 115, 113, 111, 110, 114 ]
}
]
推荐阅读
- powershell - 自托管 vsts 构建代理上的 signtool 命令未完成
- wordpress - Wordpress:为管理员用户加载特定的 CSS
- python - 从没有 homedir 的用户的 tex 生成 pdf
- c++ - 为什么'static'关键字允许函数返回正确的引用?
- android - Retrofit 2 错误响应处理
- mbed - 我可以将简易连接库与 Roving Network XV Wifi 模块一起使用吗?
- python - python SELECT COLUMN FROM TABLE WHERE COLUMN = self.variable
- html - CSS 流体视频
- c++ - GetModuleHandle() 无法检索“notepad.exe”加载的“advapi32.dll”句柄
- python - 来自串行的高延迟