gpt4 book ai didi

elasticsearch - Elasticsearch-在聚合查询期间覆盖映射定义

转载 作者:行者123 更新时间:2023-12-03 00:46:39 25 4
gpt4 key购买 nike

我有一个汇总查询-

POST /my-index/_search
{
"query": {
...
"filter": [
{
"terms": {
"venueId.keyword": [
"ID1",
"ID2"
]
}
}
]
}
},
"from": 0,
"size": 0,
"aggs": {
"venue": {
"terms": {
"field": "venueId.keyword"
},
"aggs": {
"multi_agg": {
"terms": {
"field": "networkName.keyword"
}
}
}
}
}
}

如果我有2个网络(用于同一场所),名称分别为 XXXxxx。聚合输出包含2个网络,只有1个名称- xxx,例如-
 "aggregations": {
"venue": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "ID1",
"doc_count": 5,
"multi_agg": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "xxx",
"doc_count": 2
}...

上面的原因是一个映射为小写的映射-
GET /my-index/_mapping/field/networkName.keyword
{
"my-index": {
"mappings": {
"_doc": {
"networkName.keyword": {
"full_name": "networkName.keyword",
"mapping": {
"keyword": {
"type": "keyword",
"ignore_above": 256,
"normalizer": "lowercase"
}
}
}
}
}
}
}

由于向后兼容,因此无法更新设置。请告知是否有可能以及如何在聚合查询期间覆盖映射,以获取输出2个不同的键(计数为1),名称分别为 XXXxxx

最佳答案

创建映射后,就不能覆盖它,
您可以使用旧索引的映射来创建新索引,只需确保在添加新索引的映射时使用正确的数据类型来更新各自的字段

休息很简单,只要使用所需的映射创建了新索引,就运行此代码

POST _reindex
{
"source": {
"index": "old_index"
},
"dest": {
"index": "new_index"
}
}

关于elasticsearch - Elasticsearch-在聚合查询期间覆盖映射定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59855123/

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