我知道可以映射您的個人ID,以便文檔ID與您的個人ID相同,但是是否有可能以其他方式周圍?是否可以將Elastic文檔ID值映射到映射中的某個字段
如何將文檔ID值映射到映射中的屬性?
解決方案可能最好使用C#NEST庫,但沒有必要,謝謝。
我知道可以映射您的個人ID,以便文檔ID與您的個人ID相同,但是是否有可能以其他方式周圍?是否可以將Elastic文檔ID值映射到映射中的某個字段
如何將文檔ID值映射到映射中的屬性?
解決方案可能最好使用C#NEST庫,但沒有必要,謝謝。
我不知道任何可以修改索引到ES中的源的功能。
(不建議使用)transform
feature可以在索引時添加一個新的任意字段,但不會修改源,這意味着當檢索結果時,您不會獲得創建的字段。
我建議你創建自己的ID並將它們分配給你的MyDocId
字段,並且不要讓ES生成它們。
請注意,在ES 5中,我們將有一種名爲Ingest node的新類型的節點,它將允許定義轉換管道,類似於Logstash過濾器所能做的。在這一點上,你就可以以設置/創建任意字段並實現你想要使用set processor:
{
"set": {
"field": "MyDocId",
"value": "_id"
}
}
一個選項 - 是的。最可能轉向的選項。知道[routing](https://www.elastic.co/guide/en/elasticsearch/reference/2.3/mapping-fields.html#_routing_meta_fields)是否可以在doc _id字段和映射字段之間起作用會很有趣 –
NEST不會生成的ID當前映射到POCO的屬性;你可以從response.Hits
元使用
var response = client.Search<Poco>();
var pocos = response.Hits.Select(hit =>
{
hit.Source.Id = h.Id;
return hit.Source;
}).ToList();
This was discussed again in January手動分配的ID,我們決定保持目前的執行情況; POCO映射到Elasticsearch中的_source
。
恥辱,將不得不去,並生成我自己的ID,並將其推到彈性使用它作爲文檔ID ...重新手動分配 - 收到成千上萬的結果時非常昂貴的舉動。無論如何感謝 –
@NeilVarnas您可以讓ES爲您生成它,但需要確保您在反序列化後將其映射到您的POCO上,並在對ES中的文檔進行任何更新操作時使用該id。如果你覺得有一個很好的方法來做這個可配置的功能,請隨時討論 - https://github.com/elastic/elasticsearch-net/issues –
我想你錯過了我的意思......我知道ES可以生成一個身份證,但那不是一個目標。再次 - 在運行時取消序列化的id字段值比生成我自己的id更昂貴,並且在索引新數據時告訴ES將它用作doc ID。謝謝 –
是什麼阻止你直接訪問'_id'?你能解釋這背後的需要嗎? – Val
爲了讓我在結果中獲取文檔ID,我需要重新查看返回的結果並將文檔ID分配給映射POCO類中的自定義字段。當處理大數據集(7k +)時,這個額外的步驟有點笨拙,所以我想我可以用Elastic(如果可能的話)在文檔創建(當索引數據時)填充這個自定義字段。希望這是有道理的 –
所以你讓ES生成ID,你也希望這個ID在你的文檔中可用。正確? – Val