_id 不会在 Elasticsearch 中自动生成
_id is not getting autogenerated in Elasticsearch
我有一个简单的 SalesOrder 类型文档列表。在将它们插入弹性搜索时,_id 正在获取 SalesOrderId 的值。我需要它自动生成。下面是我的class
public class SalesOrder
{
[XmlElement("Id")]
public long SalesOrderId { get; set; }
public long CustomerId { get; set; }
public DateTime? BookedDate { get; set; }
public long SalesOrderNo { get; set; }
}
这就是我在弹性搜索中插入文档的方式
ElasticClient elasticClient = CreateElasticClient(indexName);
if (!elasticClient.IndexExists(i => i.Index(indexName)).Exists)
{
elasticClient.CreateIndex(indexName, s => s.AddMapping<T>(m => m
.MapFromAttributes()));
}
// create indexes
var response = elasticClient.IndexMany<T>(documents);
您可以指定一个 Id 字段供 ES 使用,如下所示:
[ElasticType(Name = "salesOrder", IdProperty = "Id")]
public class SalesOrder
{
public string Id {get;set;}//this is used internally by ES
public long SalesOrderId { get; set; }
public long CustomerId { get; set; }
public DateTime? BookedDate { get; set; }
public long SalesOrderNo { get; set; }
}
注意:如果您填充 Id,它将使用该值插入到 ES 中。如果您将其保留为空,那么 ES 会自动为您创建它。
另外,如果您的销售订单 class 是特定于 ElasticSearch 的,那么它不应该有 XmlElement 标签。
我有一个简单的 SalesOrder 类型文档列表。在将它们插入弹性搜索时,_id 正在获取 SalesOrderId 的值。我需要它自动生成。下面是我的class
public class SalesOrder
{
[XmlElement("Id")]
public long SalesOrderId { get; set; }
public long CustomerId { get; set; }
public DateTime? BookedDate { get; set; }
public long SalesOrderNo { get; set; }
}
这就是我在弹性搜索中插入文档的方式
ElasticClient elasticClient = CreateElasticClient(indexName);
if (!elasticClient.IndexExists(i => i.Index(indexName)).Exists)
{
elasticClient.CreateIndex(indexName, s => s.AddMapping<T>(m => m
.MapFromAttributes()));
}
// create indexes
var response = elasticClient.IndexMany<T>(documents);
您可以指定一个 Id 字段供 ES 使用,如下所示:
[ElasticType(Name = "salesOrder", IdProperty = "Id")]
public class SalesOrder
{
public string Id {get;set;}//this is used internally by ES
public long SalesOrderId { get; set; }
public long CustomerId { get; set; }
public DateTime? BookedDate { get; set; }
public long SalesOrderNo { get; set; }
}
注意:如果您填充 Id,它将使用该值插入到 ES 中。如果您将其保留为空,那么 ES 会自动为您创建它。
另外,如果您的销售订单 class 是特定于 ElasticSearch 的,那么它不应该有 XmlElement 标签。