首页 > 解决方案 > 如何在桶排序弹性搜索查询中添加多个字段

问题描述

下面是查询。在此查询中,我需要再添加一个字段,即category.keyword. 我发现很难添加一个额外的字段。请修改我的查询并在查询中添加类别关键字字段。

我的要求是显示问题列表和带有计数的类别列表。

{
  "size": 0,
  "aggs": {
    "genres": {
      "terms": {
        "field": "question.keyword",
        "order": {
          "_count": "desc"
        }
      },
      "aggs": {
        "bucket_truncate": {
          "bucket_sort": {
            "from": 0,
            "size": 10
          }
        }
      }
    }
  }
}

索引映射详细信息

  "mapping": {
    "properties": {
      "answer": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "category": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "question": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "relavence_score": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      },
      "source": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
}
      },
      "timestamp": {
        "type": "long"
      },
      "id": {
        "type": "text",
        "fields": {
          "keyword": {
            "type": "keyword",
            "ignore_above": 256
          }
        }
      }
    }
  }
}

标签: elasticsearchelasticsearch-aggregationelasticsearch-dsl

解决方案


在您的情况下,您可以在同一级别有多个聚合,bucket_truncate并且categories

{
  "size": 0,
  "aggs": {
    "questions": {
      "terms": {
        "field": "question.keyword",
        "order": {
          "_count": "desc"
        }
      },
      "aggs": {
        "categories": {
          "terms": {
            "field": "category.keyword",
            "order": {
              "_count": "desc"
            }
          }
        },
        "bucket_truncate": {
          "bucket_sort": {
            "from": 0,
            "size": 10
          }
        }
      }
    }
  }
}

推荐阅读