這是我在這個網站上的第一個問題,所以我會試着問這個問題是否正確。在elasticsearch NEST客戶端中使用一個地理點爲一個未映射/動態映射的文檔建立索引
同時使用elasticsearch nest客戶端,我使用批量索引來存儲我的數據。所有數據都可以在Dictionary<string, object>
的幫助下編入索引。 我工作的公司堅持動態映射,這意味着我不允許聲明進入節點的變量。
Dictionary <string, object> document_value= new Dictionary<string, object>();
Bulkcontainer.Index<object>(i => i.Index(index_name).Type(_type).Id(_id).Document(document_value));
直到使用GEO分數時,這並不是問題。 如果這些索引不是可搜索的,則當它們放置在dictonary時,它們將默認爲字符串。我無法覆蓋他們。 地址的數據以另一個稱爲geofields的冠詞形式提供給代碼。
PointGeoShape coord = new PointGeoShape();
Dictionary<string, PointGeoShape> geovalue = new Dictionary<string, PointGeoShape>();
if (geofields!= null)
{
foreach (KeyValuePair<string, object> geo in geofields)
{
string veldnaam = geo.Key.ToUpper();
string temp = geo.Value.ToString();
if (temp != "")
{
string[] array = temp.Split(new char[] { ',' }, 2);
List<double> list = new List<double>();
list.Add(double.Parse(array[0]));//lon
list.Add(double.Parse(array[1]));//lat
IEnumerable<double> latlon = list;
coord.Coordinates = latlon;
document_value.Add(veldnaam, coord);
}
}
}
任何幫助澄清我的問題可以理解
我改變了指數型到
public class ES_DATA_GEO
{
public Dictionary<string, object> Data { get; set; }
[ElasticProperty(Type = Nest.FieldType.GeoShape)]
public GeoShape Locatiecoord { get; set; }
}
但現在,當我執行查詢它仍然犯規註冊Locatiecoord作爲地理字段
Failed to find geo_shape field [locatiecoord]];
再次任何幫助理解
嗨,羅伊,我有一個類似的,如果你已經解決了,請讓我知道,我已經把我的問題放在這裏。 http://stackoverflow.com/questions/33579086/unable-to-insert-dynamic-object-to-elastic-search-using-nest – cmrhema