gpt4 book ai didi

c# - 在 elasticsearch NEST 客户端中使用地理点索引未映射/动态映射的文档

转载 作者:太空狗 更新时间:2023-10-29 21:44:11 24 4
gpt4 key购买 nike

这是我在这个网站上的第一个问题,所以我会尽量提出正确的问题。

在使用 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 点之前,这不是问题。如果这些没有被索引为地理点,它们将不可搜索,当放置在字典中时,它们将默认为字符串。我无法覆盖它们。geopoint 的数据以另一个名为 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]];

再次感谢任何帮助

最佳答案

根据文档,动态映射无法自动检测地理点。参见 Geo Points

关于c# - 在 elasticsearch NEST 客户端中使用地理点索引未映射/动态映射的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30163271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com