小编jor*_*dor的帖子

Perl中的基本循环差异(++/+1)

最近我试图用Perl做一个简单的循环,我发现了一个我不明白的行为.

这里的行为:

my $a = {index => 0};
for (0 .. 10) {
    $a->{index} = ($a->{index}++) % 2;
    warn $a->{index};
}
Run Code Online (Sandbox Code Playgroud)

此代码的输出将是:

0,0,0,..,0
Run Code Online (Sandbox Code Playgroud)

但是,如果我用'a - > {index} +1替换$ a - > {index} ++的"相同"代码,循环就可以了,例如

my $a = {index => 0};
for (0 .. 10) {
    $a->{index} = ($a->{index}+1) % 2;
    warn $a->{index};
}
Run Code Online (Sandbox Code Playgroud)

输出将是:

1,0,1,0,1,0,1,0...
Run Code Online (Sandbox Code Playgroud)

在这种情况下,有人可以解释一下++/+1之间的区别吗?我发现这真的很"难看",因为如果我没有将结果分配给"++"中的任何变量,代码将按预期工作,除非我将总和放在()中.

此代码将正确执行循环:

my $a = {index => 0};
for (0 .. 10) {
    warn $a->{index}++ % 2;
}
Run Code Online (Sandbox Code Playgroud)

使用总和中的(),代码将输出: 1,2,3,4,5,6,7,8,9

my $a = {index => 0}; …
Run Code Online (Sandbox Code Playgroud)

perl

8
推荐指数
1
解决办法
246
查看次数

创建/更新文档日期的摄取管道

我正在尝试实现类似于 Mysql 的行为,为我通过 ES 管道索引的每个文档的元数据添加 insert_at/updated_at 。

我的管道是这样的:

{
  "description": "Adds createdAt and updatedAt style timestamps",
  "processors": [
    {
      "set": {
        "field": "_source.indexed_at",
        "value": "{{_ingest.timestamp}}",
        "override": false
      }
    },
    {
      "set": {
        "field": "_source.updated_at",
        "value": "{{_ingest.timestamp}}",
        "override": true
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我没有映射,只尝试添加一个文档:

POST test_pipelines/doc/1?pipeline=timestamps
{
  "foo": "bar"
}
Run Code Online (Sandbox Code Playgroud)

管道成功创建indexed_at并且updated_at

{
  "_index": "test_pipelines",
  "_type": "doc",
  "_id": "1",
  "_score": 1,
  "_source": {
    "indexed_at": "2018-07-12T10:47:27.957Z",
    "updated_at": "2018-07-12T10:47:27.957Z",
    "foo": "bar"
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试更新 doc 1,indexed_at该字段每次都会更改为更新文档的同一日期。

更新请求示例:

POST …
Run Code Online (Sandbox Code Playgroud)

elasticsearch

6
推荐指数
1
解决办法
5200
查看次数

ElasticSearch(search_context_missing_exception)与Search :: ElasticSearch :: Scroll

我正在使用Search :: Elasticsearch和Search :: Elasticsearch :: Scroll进行搜索并滚动到我的elasticsearch服务器.

在滚动过程中,对于某些查询,我在滚动搜索结果时看到下一个错误:

2016/03/22 11:03:38 - 265885 FATAL: [Daemon.pm][8221]: Something gone wrong, error $VAR1 = bless( {
 'msg' => '[Missing] ** [http://localhost:9200]-[404] Not Found, called from sub Search::Elasticsearch::Scroll::next at searcher.pl line 92. With vars: {\'body\' => {\'hits\' => {\'hits\' => [],\'max_score\' => \'0\',\'total\' => 5215},\'timed_out\' => bless( do{\\(my $o = 0)}, \'JSON::XS::Boolean\' ),\'_shards\' => {\'failures\' => [{\'index\' => undef,\'reason\' => {\'reason\' => \'No search context found for id [4920053]\',\'type\' => \'search_context_missing_exception\'},\'shard\' => -1},{\'index\' => undef,\'reason\' …
Run Code Online (Sandbox Code Playgroud)

perl elasticsearch

5
推荐指数
1
解决办法
1205
查看次数

如何在Test :: More中避免"你试图计划两次"

我是单元测试的新手.我假装加载内部使用Test :: More的N个类,用自己的封装进行不同的测试.

但是我接受了这个错误:"你试图在Tests/Bar.pm第9行计划两次."

这种"多个测试"的方法是正确的,我的意思是它是在perl中进行单元测试的标准方法吗?如何使用Test :: More获得这种级别的封装?

谢谢你的建议!

main.pl:

use strict;
use warnings;
use utf8;


use Tests::Foo;
use Tests::Bar;

my $ret1 = Tests::Foo->run();
my $ret2 = Tests::Bar->run();
Run Code Online (Sandbox Code Playgroud)

测试:: Foo:

package Tests::Foo;
use strict;
use warnings;


sub run
{
    my $ret;
    use Test::More qw(no_plan);
    my $test = Test::More->builder;
    is(1,1,'correct()');
    is(1,2,'fails()');
    return $test;#return all test object
}
1;
Run Code Online (Sandbox Code Playgroud)

测试::酒吧

package Tests::Bar;
use strict;
use warnings;


sub run
{
    my $ret;
    use Test::More qw(no_plan);
    my $test = Test::More->builder;
    is(2,1,'fail()');
    is(2,2,'correct()');
    return $test;#return all …
Run Code Online (Sandbox Code Playgroud)

tdd perl unit-testing

2
推荐指数
1
解决办法
610
查看次数

Grafana 对 Elasticsearch 数据源的两个字段总和使用聚合

  1. 我有两个字段,假设名称是 {"apple":100} and {"orange: 50"}

  2. 我想使用 Grafana 指标来计算“苹果”和“橙色”的总和

  3. 我尝试使用多个总和指标,但这并没有将两个字段的总和相加。

  4. 经过网上发布的讨论/问题后,我仍然无法找到确切的解决方案。

elasticsearch grafana

2
推荐指数
1
解决办法
5467
查看次数

标签 统计

elasticsearch ×3

perl ×3

grafana ×1

tdd ×1

unit-testing ×1