Elasticsearch NEST - System.StackOverflowException 当 运行 索引

Elasticsearch NEST - System.StackOverflowException when running Index

当我运行这段代码时:

var result = _client.Index<EntityType>(item, i => i.Index(n));

我收到这个错误:

Exception has occurred: CLR/System.WhosebugException An unhandled exception of type 'System.WhosebugException' occurred in Elasticsearch.Net.dll

完整方法:

public bool Index<EntityType>(EntityType item, int attempt = 0) where EntityType : class, IDomainEntity<int>
{
    const int maxRetries = 5;
    if (item == null)
    {
        return false;
    }
    var type = item.GetType();
    var attributes = type.CustomAttributes;
    string n = "";

    foreach (var attribute in attributes)
    {
        foreach (var arg in attribute.NamedArguments)
        {
            if (arg.MemberName == "RelationName")
            {
                n = arg.TypedValue.Value.ToString().ToLower();
            }
        }
    }

    var result = _client.Index<EntityType>(item, i => i.Index(n));
    if (!CheckResponse(result) && attempt < maxRetries)
    {
        RefreshClient<EntityType>();
        attempt++;
        return Index(item, attempt);
    }
    RefreshClient<EntityType>();
    return result.IsValid;
}

我将 [PropertyName("propertyToIgnoreInElasticsearch", Ignore = true)] 从 NEST 添加到我的 POCO 字段,这在索引时导致无限循环。它忽略了 Elasticsearch 索引中的一个字段,因此它没有被索引。

例如:

[Serializable]
public abstract class VeganItem<VeganItemEstablishmentType>
{
    [Required]
    public string Name { get; set; }

    [PropertyName("veganItemEstablishments", Ignore = true)]
    public virtual ICollection<VeganItemEstablishmentType> VeganItemEstablishments { get; set; }
}