- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经创建了常规脚本来计算新的字段值。然后,我可以在我的查询中使用该脚本,使用 script_fields
参数计算新的字段值。这是一个例子:
{
"query": {
"filtered": {
"query": {
"bool": {
"must": {"match_all": {}}
}
}
}
},
"script_fields":{
"my_field":{
"script_id":"my_field_calculator",
"lang" : "groovy",
"params": {}
}
}
}
这工作得很好,我看到每个结果都有一个包含 my_field
的 fields
对象。完美的。
现在我想使用 terms aggregation要获取此新字段值每次出现的次数,如下所示:
{
"query": {
"filtered": {
"query": {
"bool": {
"must": {"match_all": {}}
}
}
}
},
"script_fields":{
"my_field":{
"script_id":"my_field_calculator",
"lang" : "groovy",
"params": {}
}
}
"aggs": {
"counts_by_my_field": {
"terms": {
"field": "my_field"
}
}
}
}
查询运行得很好,我仍然在每个字段中看到我的计算结果,但是 aggregations
对象包含一个键,counts_by_my_field
,带有一个空的 buckets
里面的数组。
我错过了什么?是否可以在聚合中使用 script_fields?
最佳答案
那是不可能的,现在还不行。 script_fields 在聚合或分面中作为 field
放置时不起作用。
并且没有任何方法可以通过聚合访问脚本字段。见解释。
我深入研究了 Elasticsearch 实现代码,
这是 ValuesSourceAggregationBuilder#script() 的 Javadoc用于脚本的术语聚合。
Sets the script which generates the values. If the script is configured along with the field (as in {@link #field(String)}), then * this script will be treated as a {@code value script}. A value script will be applied on the values that are extracted from * the field data (you can refer to that value in the script using the {@code _value} reserved variable). If only the script is configured * (and the no field is configured next to it), then the script will be responsible to generate the values that will be aggregated. *
这意味着,您不能将“script_id”发送到聚合。你只能这样做,
POST index/type/_search
{
"aggs": {
"name": {
"terms": {
"script": "_source.data[0]",
"lang": "groovy",
"params": {}
}
}
}
}
希望对您有所帮助!!谢谢
关于elasticsearch - 在 script_field 值上使用 elasticsearch 聚合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258024/
我尝试使用“script_fields”为我的字段设置新值,但我看不到已在结果集中添加的“字段”,{ "query": { "my_type_x": xxx }, "script_
在使用自定义脚本时在Sort_context中。根据documentation我可以访问这些。 1)参数( map ,只读) 2)文档( map ,只读) 3) _score(双只读) 有没有办法,我
我已经创建了常规脚本来计算新的字段值。然后,我可以在我的查询中使用该脚本,使用 script_fields 参数计算新的字段值。这是一个例子: { "query": { "fi
我需要在无痛 script_fields 上迭代嵌套对象以进行查询,但符号 doc['nestedProperty.property'] 没有给我值,使用数组符号 doc['nestedPropert
我正在运行一个像这样的简单查询: { "query": { "term": { "statuses": "active" } }, "script_fields
我尝试使用 script_fields 从我的数据中检索数组值,但我收到了不一致的结果。 我的映射: curl -XPUT localhost:9200/test/user/_mapping -d '
我是一名优秀的程序员,十分优秀!