通过查询阻止Elasticsearch对更新进行重新索引

时间:2017-12-27 18:45:54

标签: c# elasticsearch nest

我在C#上使用带有Nest 5的Elasticsearch 5.

我有一个这样的实体:

public class Visitor {
...
    public List<ESRecipient> RecipientOf { get; set; }
...

像这样的映射

.Index(ESIndexName) 
.Settings(s => s
    ...
    .RefreshInterval("10s")
    ...
)
.Mappings(m => m
    .Map<Visitor>(map => map

        // Routing required
        .AutoMap().RoutingField(r => r.Required(true))

        // Custom Properties
        ...
        .Properties(p => p.Nested<ESRecipient>(n => n.Name(name => name.RecipientOf).AutoMap()))
        ...

我正在通过这样的查询进行更新:

client.UpdateByQuery<Visitor>(u => u
.Script(script => script
    .Inline(@"
    ...
    ")
 )
.ScrollSize(10000)
.RequestsPerSecond(-1)
.Refresh(false)

我遇到的问题是,当我按查询运行更新时,大约需要8秒来更新30000个访问者,但如果我将索引RefreshInterval更改为30秒,则更新需要100毫秒才能运行。所以我的猜测是Elasticsearch在这种情况下只是忽略了refresh = false查询字符串,它只是在更新后刷新索引。

当我设置&#34; .Refresh(false)&#34时,我期望在100毫秒内运行此更新。在update语句事件中,如果我只是将索引刷新间隔保留为默认值1秒。

0 个答案:

没有答案