我有一个歌曲信息的索引。我有一个字段“艺术家姓名”,其中可以有多个艺术家由逗号分隔。我想用terms aggregation获取艺术家的歌曲计数,但它没有用逗号分割我的字段。
以下是我的查询:query agg
以下是elasticsearch响应:es response
我还设置了字段的Map如下:
有人能帮我一下吗?
谢谢你,安托万
我有一个歌曲信息的索引。我有一个字段“艺术家姓名”,其中可以有多个艺术家由逗号分隔。我想用terms aggregation获取艺术家的歌曲计数,但它没有用逗号分割我的字段。
以下是我的查询:query agg
以下是elasticsearch响应:es response
我还设置了字段的Map如下:
有人能帮我一下吗?
谢谢你,安托万
1条答案
按热度按时间ni65a41a1#
您的分析器设置在
Artist name(s)
字段,而不是Artist name(s).keyword
字段。keyword
字段从不分析。所以你的查询几乎是正确的,如果你在
Artist name(s)
字段上运行它,它会工作,但只有当你在文本字段上启用fielddata
,为字段的分析术语创建桶(在这种情况下,你的关键字字段是无用的,你可以删除它)。另外值得注意的是,启用fielddata会显著增加内存使用量。解决这个问题的一个更好的方法是在字段中存储艺术家姓名数组,而不是用逗号分隔。这样你就可以离开你的关键字字段的查询,它将工作。
PS:你应该在你的问题中添加文本代码而不是截图,因为这将使其他人更容易搜索和找到你的帖子。