3 回答
TA贡献1891条经验 获得超3个赞
这样的事情应该做:
var query = new {
bool = new {
must = new {
match = new {
field = "status",
query = "success"
}
},
filter = new {
range = new {
createDate = new {
gt = "2018-12-01T00:00:00.000Z"
}
}
}
}
};
TA贡献2041条经验 获得超4个赞
我真的不明白 C# 语法如何映射到 Elasticsearch 中的查询 DSL。
通过查看提供的示例,我假设您想使用PosData.Serializable(query). 在这种情况下,查询对象(无论它是什么类型)将被 JSON 序列化并发布到 elasticsearch 集群,无需任何修改。当您使用new {}C# 语法创建对象时,默认情况下将其序列化为 JSON,并使用与该对象的属性相同的键。也就是说,对象
new {
query = new {
bool = new {
must = new {
term = new {
status = "success"
}
},
filter = new {
range = new {
date = new { gte = "2018-12-22T00:00:00.000Z" }
}
}
}
}
}
将被序列化并传递给elasticsearch
"query": {
"bool": {
"must": {
"term": {
"status": "success"
}
},
"filter": {
"range": {
"date": { "gte": "2018-12-22T00:00:00.000Z" }
}
}
}
}
因此,通过使用低级 Elasticsearch 客户端,您可以创建几乎 1:1 映射到查询 DSL 语法的对象。您可以从 elastic.co 复制示例,将“:”替换为“= new”,从属性名称中删除引号,基本上就是这样。
TA贡献1872条经验 获得超3个赞
查询将类似于:
var query = new {
bool = new {
must = new {
match = new {
field = "status",
query = "success"
}
},
filter = new {
range = new {
createDate = new {
gte = "2018-01-01T00:00:00.000Z",
lt = "2019-01-01T00:00:00.000Z"
}
}
}
}
};
- 3 回答
- 0 关注
- 200 浏览
添加回答
举报