我目前正在为具有这样数据结构的实体建立标签(行业)索引:

industry: ["Consulting & Recruitment","Professional Services","Education & Training"]

我正在将termsAggregation应用于查询为:
AggregationBuilders.terms("industry").field("industry");

我期望得出的结果是:
Key: "Consulting & Recruitment"
docCount: 100

我实际得到的是:
Key: "Consulting"
docCount: 100
Key: "Recruitment"
docCount: 100.

有没有办法纠正这个问题?

谢谢

最佳答案

看起来字段industry是使用默认分析器索引的,该默认分析器在单词边界处打断了输入字符串,并将其小写。因此,在您的情况下,索引标记将是“咨询”,“招聘”,“专业”,“服务”,“教育”和“培训”。 Term aggregation选择索引的 token 。因此,它只选择“咨询”而不是“咨询与招聘”。解决此问题的方法是使字段industry不被分析。在这种情况下, token “咨询与招聘”,“专业服务”,“教育与培训”将按原样编制索引,您将获得预期的结果。

10-07 17:07