我目前正在为具有这样数据结构的实体建立标签(行业)索引:
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 “咨询与招聘”,“专业服务”,“教育与培训”将按原样编制索引,您将获得预期的结果。