2015-04-01 81 views
1

我有一個簡單的SalesOrder類型的文檔列表。在將它們插入到彈性搜索中時,_id取值爲SalesOrderId。我需要它自動生成。下面是我的課_id沒有在Elasticsearch中自動生成

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

回答

0

您可以指定一個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會自動爲您創建它。

另外,如果您的SalesOrder類特定於ElasticSearch,那麼它不應該有一個XmlElement標籤。

+0

@ jhilden-我使用相同的類來反序列化XML。在彈性搜索的情況下會有什麼問題嗎? – Rati 2015-04-01 14:15:23

+0

添加[ElasticType]屬性並使用XML內容進行嘗試。它可能會工作。話雖如此,如果您正在開發一個企業級系統,最好爲每個系統分配不同的模型。 – jhilden 2015-04-01 14:18:34

+0

感謝您的建議,它的工作很棒。 – Rati 2015-04-02 06:20:55

相關問題