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