Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch 如何划分两个字段并获得平均值_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch 如何划分两个字段并获得平均值,elasticsearch,elasticsearch" /> elasticsearch 如何划分两个字段并获得平均值,elasticsearch,elasticsearch" />

elasticsearch 如何划分两个字段并获得平均值

elasticsearch 如何划分两个字段并获得平均值,elasticsearch,elasticsearch,我用的是弹性6.5 我需要将两个字段分开,然后得到一个平均值 我正在尝试重新创建的mysql示例: SELECT avg(field1/field2) FROM table WHERE field1 > 0 && field2 > 0 你可以用它来实现你想要的 我已经为这个用例创建了示例映射、文档、查询和响应,如下所述: 映射 样本文件: 查询请求 您在上面的响应中查找的是average字段 希望有帮助 我已通过以下查询解决了我的任务: { "size": 0,

我用的是弹性6.5

我需要将两个字段分开,然后得到一个平均值

我正在尝试重新创建的mysql示例:

SELECT avg(field1/field2)
FROM table
WHERE field1 > 0 && field2 > 0

你可以用它来实现你想要的

我已经为这个用例创建了示例映射、文档、查询和响应,如下所述:

映射 样本文件: 查询请求 您在上面的响应中查找的是
average
字段


希望有帮助

我已通过以下查询解决了我的任务:

{
  "size": 0,
  "query": { 
    "match_all":{}
  },
  "aggs": {
    "average": {
      "avg": {
        "script": {
          "source": "(doc['field1'].empty || doc['field2'].empty || doc['field2'].value < 1  ? null : doc['field1'].value / doc['field2'].value)"
        }
      }
    }
  }
}
{
“大小”:0,
“查询”:{
“全部匹配”:{}
},
“aggs”:{
“平均”:{
“平均值”:{
“脚本”:{
“来源:”(doc['field1'].empty | | doc['field2'].empty | | | doc['field2'].value<1?空:doc['field1'].value/doc['field2'].value)
}
}
}
}
}

谢谢你的回答。在Kibana中运行脚本时,脚本的格式一直有问题,所以我没有看到结果。嘿@Crixus,没问题。下次一定要提到您希望在kibana中运行查询。会相应地创建查询。你的答案缺少一个条件。除此之外,看起来不错。继续接受你的回答。我错过了什么条件?@KamalI我知道你是从哪里来的。我没有这个额外条件的原因是因为0/1=0。有这个额外的检查对性能有好处吗?我提到这一点是因为在你的问题中,你提到了它。我假设你只有正整数,没有负整数。即便如此,我有时也会自娱自乐。我觉得你拥有的一切太棒了。至于性能方面的好处,我不认为这有什么区别,但我会编写这种逻辑,因为我们应该编写代码让人们理解。我们中的一些人仍然是人类;)
POST myindex/mydocs/1
{
  "field1": 0,
  "field2": 0
}
POST myindex/mydocs/2
{
  "field1": 20,
  "field2": 20
}
POST myindex/mydocs/3
{
  "field1": 40,
  "field2": 20
}
POST myindex/mydocs/4
{
  "field1": 40,
  "field2": 0
}
POST <your_index_name>/_search
{  
   "_source":"*",
   "query":{  
      "match_all":{  

      }
   },
   "script_fields":{  
      "average":{  
         "script":"long a1 = 0l;long a2 = 0l;if(params._source.field1==null){a1 = 01;} else {a1 = params._source.field1}if(params._source.field2==null || params._source.field2<0){ a2=0l} else {a2 = params._source.field2}return a2 > 0? (a1/a2) : 0;"
      }
   }
}
{
  "took": 12,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 4,
    "max_score": 1,
    "hits": [
      {
        "_index": "myindex",
        "_type": "mydocs",
        "_id": "2",
        "_score": 1,
        "_source": {
          "field1": 20,
          "field2": 20
        },
        "fields": {
          "average": [
            1
          ]
        }
      },
      {
        "_index": "myindex",
        "_type": "mydocs",
        "_id": "4",
        "_score": 1,
        "_source": {
          "field1": 40,
          "field2": 0
        },
        "fields": {
          "average": [
            0
          ]
        }
      },
      {
        "_index": "myindex",
        "_type": "mydocs",
        "_id": "1",
        "_score": 1,
        "_source": {
          "field1": 0,
          "field2": 0
        },
        "fields": {
          "average": [
            0
          ]
        }
      },
      {
        "_index": "myindex",
        "_type": "mydocs",
        "_id": "3",
        "_score": 1,
        "_source": {
          "field1": 40,
          "field2": 20
        },
        "fields": {
          "average": [
            2
          ]
        }
      }
    ]
  }
}
{
  "size": 0,
  "query": { 
    "match_all":{}
  },
  "aggs": {
    "average": {
      "avg": {
        "script": {
          "source": "(doc['field1'].empty || doc['field2'].empty || doc['field2'].value < 1  ? null : doc['field1'].value / doc['field2'].value)"
        }
      }
    }
  }
}