Henri
Henri

Reputation: 1741

Nodejs Elasticsearch query default behaviour

On a daily basis, I'm pushing data (time_series) to Elasticsearch. I created an index pattern, and my index have the name: myindex_* , where * is today date (an index pattern has been setup). Thus after a week, I have: myindex_2022-06-20, myindex_2022-06-21... myindex_2022-06-27.

Let's assume my index is indexing products' prices. Thus inside each myindex_*, I have got:

    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
},

I'm using this query to get the reference code and the corresponding prices. And it works great.

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

But, I would like to have a query that if in the index of the date 2022-06-27, there is no data, then it checks, in the previous index 2022-06-26, and so on (until e.g. 10x).

Not sure, but it seems it's doing this when I replace myindex_2022-06-27 by myindex_* (not sure it's the default behaviour).

The issue is that when I'm using this way, I got prices from other index but it seems to use the oldest one. I would like to get the newest one instead, thus the opposite way.

How should I proceed?

Upvotes: 0

Views: 114

Answers (1)

Milen Georgiev
Milen Georgiev

Reputation: 512

If you query with index wildcard, it should return a list of documents, where every document will include some meta fields as _index and _id.

You can sort by _index, to make elastic search return the latest document at position [0] in your list.

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

Upvotes: 1

Related Questions