不确定错误的位置,但这就是我的意思。 以下代码(GeoShape过滤查询):
List<List<double>> gs_polygone_quiberon = new List<List<double>>() {
new List<double>() {-3.183515, 47.542491}
, new List<double>(){-3.095624, 47.537624}
, new List<double>(){-3.026788, 47.478487}
, new List<double>() {-3.190896, 47.452956}
, new List<double>() {-3.183515, 47.542491}
};
var results = client.Search<Elastic_Oi>(s => s
.AllIndices()
.From(0)
.AllTypes()
.Size(10)
.Query(q => q.Filtered(
f => f.Filter(x =>
x.GeoShape("GeoShapeLocation", d => d.Type("polygon").Coordinates(gs_polygone_quiberon))
)
)
)
);
生成以下JSon:
{
"from": 0,
"size": 10,
"query": {
"filtered": {
"filter": {
"geo_shape": {
"GeoShapeLocation": {
"shape": {
"type": "polygon",
"coordinates": [
[
-3.183515,
47.542491
],
[
-3.095624,
47.537624
],
[
-3.026788,
47.478487
],
[
-3.190896,
47.452956
],
[
-3.183515,
47.542491
]
]
}
}
}
}
}
}
}
在NEST中出现400错误。
直接在ES中执行Json会生成空指针异常。为了能够执行查询,我必须在“坐标”字段中添加缩进级别,如下面的Json(我在[]
中包含所有“坐标”字段值{
"from": 0,
"size": 10,
"query": {
"filtered": {
"filter": {
"geo_shape": {
"GeoShapeLocation": {
"shape": {
"type": "polygon",
"coordinates": [[
[
-3.183515,
47.542491
],
[
-3.095624,
47.537624
],
[
-3.026788,
47.478487
],
[
-3.190896,
47.452956
],
[
-3.183515,
47.542491
]
]]
}
}
}
}
}
}
}
此查询的工作方式类似于魅力,但无法使用Nest重现,GeoShape过滤器的Coordinates
方法采用IEnumerable<IEnumerable<double>>
参数,而不是IEnumerable<IEnumerable<IEnumerable<double>>>
参数。
Nest中的错误是什么?我的代码? ES?
提前致谢!
麦克
答案 0 :(得分:1)
&#34;应答&#34;我自己的问题。这是NEST中的一个错误,我们可以在NEST作者评论中看到https://github.com/elasticsearch/elasticsearch-net/issues/776