Kibana NodejsElasticSearch查询默认行为

nfs0ujit  于 2022-12-09  发布在  Kibana
关注(0)|答案(1)|浏览(177)

每天,我都会将数据(time_series)推送到Elasticsearch。我创建了一个索引模式,我的索引名为:myindex_*,其中 * 是今天的日期(已经设置了索引模式)。因此,一周后,我有:一个月一个月一个月一个月...
假设我的指数是产品价格的指数,那么在每个myindex_*中,我得到:

myindex_2022-06-26 is including many products prices like this:
{
    "reference_code": "123456789",
    "price": 10.00
},
...
myindex_2022-06-27:
{
    "reference_code": "123456789",
    "price": 12.00
},

我使用这个查询来获得参考代码和相应的价格。

const data = await elasticClient.search({
                    index: myindex_2022-06-27,
                    body: {
                        query: {
                            match: {
                               "reference_code": "123456789"
                                }
                        }
                    }
                });

但是,我想查询,如果在日期2022-06-27的索引中没有数据,那么它会检查上一个索引2022-06-26,依此类推(直到例如10 x)。
不确定,但当我用myindex_* 替换myindex_2022-06-27时,它似乎正在这样做(不确定这是默认行为)。
问题是,当我使用这种方法时,我从其他指数中获得价格,但它似乎使用最旧的一个。我想获得最新的一个,因此相反的方式。
我该如何继续?

z2acfund

z2acfund1#

如果您使用索引通配符进行查询,它应该返回一个文档列表,其中每个文档都将包含一些 meta字段,如_index_id
您可以按_index排序,使ElasticSearch返回列表中位置[0]处的最新文档。

const data = await elasticClient.search({
  index: myindex_2022-*,
  body: {
      query: {
          match: {
            "reference_code": "123456789"
              }
      }
      sort : { "_index" : "desc" },
  }
});

相关问题