Elasticsearch UpdateByQuery index refresh issue

I am working with Elasticsearch(ES) 5 and NEST 5 on C#

I have a workflow implemented using ES. Simplifiying the workflow has 2 steps.

Step 1: I generate the recipients for a message using an UpdateByQuery statement base on some criteria.

Step 2: I query all recipients generated on step 1 to actualy deliver the message.

The problem I am facing is that some times the first step run so fast that when the second step runs the index is not refresh yet, so no recipient is found.

I tried setting "WaitForCompletion(true)" (default on Nest) but I get the same result. Also I notice that UpdateByQuery does not support refresh=wait_for so not sure how to do this.

My update by query looks like this:

query
.Index(allIndexesStr)

// Exclude all contact in this list
.Query(q =>
    ...
)
.WaitForCompletion(true)
// Update script
.Script(script => script
    .Inline(scriptStr)
    .Params(p =>
        ...
    )
)
.Routing(customerSiteId.ToString());

My search look like this:

search
.Index(allIndexesStr)
.Size(size)
.Scroll(timeout)
.Query(q =>
    ...
)
.Sort(sort => sort
    .Ascending("contactGuid.keyword")
)
.Routing(customerSiteId.ToString());

So I am wondering how is the propper way to solve this issue using ES...

Any help will be appreciate

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.