gpt4 book ai didi

elasticsearch - 如何在top_hits聚合中获取字段

转载 作者:行者123 更新时间:2023-12-02 22:24:33 31 4
gpt4 key购买 nike

我有elasticsearch群集-版本1.3.0。该集群的索引文档未启用_source,因此在检索匹配项时,通常会基于请求中的“fields”参数来获取。

现在,我正在为重复的分组功能实现top_hits聚合。我想获取top_hits结果中的字段,但由于我的映射默认未启用_source,所以我现在无法执行此操作。您能否建议我在不更改现有映射的情况下实现这一目标的选项/解决方法?

我在top-hits aggregation doc中找不到它。任何帮助对此表示赞赏。

谢谢!

最佳答案

使用script fields:

  "aggs": {
"sample": {
"top_hits": {
"size": 1,
"script_fields": {
"field1": {
"script": "doc['field1']"
},
"field2": {
"script": "doc['field2']"
}
...
}
}
}
}

但是,如果分析了 field1field2,则需要一个子字段,该子字段应保留该字段的 not_analyzed版本。为什么?因为,如果以任何方式分析正常字段, doc['field']调用都将返回分析的术语,而不是被索引的初始内容。

像这样:
  "mappings": {
"test": {
"_source": {
"enabled": false
},
"properties": {
"field1": {
"type": "string",
"fields": {
"notAnalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}

和查询:
  "aggs": {
"sample": {
"top_hits": {
"size": 1,
"script_fields": {
"field1": {
"script": "doc['field1.notAnalyzed']"
}
}
}
}
}

关于elasticsearch - 如何在top_hits聚合中获取字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32754266/

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