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條經驗 獲得超4個贊
查詢將類似于:
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 關注
- 234 瀏覽
添加回答
舉報