gpt4 book ai didi

Elasticsearch |如何使用键 = 时间戳和值 = 列表为对象创建映射

转载 作者:行者123 更新时间:2023-12-03 01:10:51 25 4
gpt4 key购买 nike

在 ElasticSearch 中,我正在尝试为以下数据结构创建映射:

"timelineData": {
"1249689600000": [
{
/* left out */
}
],
"1234396800000": [
{
/* left out */
},
{
/* left out */
},
]
}
我尝试了以下方法:
timelineData: {                                 
properties: {
type: 'nested',
properties: {
/* left out */
}
}
}
创建索引会引发以下错误:
[mapper_parsing_exception] No handler for type [{type=text}] declared on field [properties]

问题:如何为上述数据结构创建 ES 映射?

最佳答案

您可以使用 dynamic mapping template :

PUT timeline_index
{
"mappings": {
"dynamic_templates": [
{
"ts_nested": {
"path_match": "timelineData.*",
"mapping": {
"type": "nested"
}
}
}
],
"properties": {
"timelineData": {
"type": "nested"
}
}
}
}

但是请考虑一下,您可能很快就会遇到有太多键来跟踪和/或达到内部字段的 ES 限制的问题。同样,您在访问内部 /* left out */ 的共享属性方面将受到限制。 Terms aggregation with nested wildcard path 中讨论的对象.
所以我建议如下:
{
"timelineData": [
{
"timestamp": 1249689600000,
"data": [{},{}, ...]
}
]
}
如果您申请 date映射到 timestamp ,您将获得能够执行日期范围查询和聚合的好处。

关于 Elasticsearch |如何使用键 = 时间戳和值 = 列表为对象创建映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64263970/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com