3 回答

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
這樣的事情應(yīng)該做:
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貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
我真的不明白 C# 語法如何映射到 Elasticsearch 中的查詢 DSL。
通過查看提供的示例,我假設(shè)您想使用PosData.Serializable(query). 在這種情況下,查詢對象(無論它是什么類型)將被 JSON 序列化并發(fā)布到 elasticsearch 集群,無需任何修改。當(dāng)您使用new {}C# 語法創(chuàng)建對象時(shí),默認(rèn)情況下將其序列化為 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 客戶端,您可以創(chuàng)建幾乎 1:1 映射到查詢 DSL 語法的對象。您可以從 elastic.co 復(fù)制示例,將“:”替換為“= new”,從屬性名稱中刪除引號,基本上就是這樣。

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
查詢將類似于:
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 關(guān)注
- 242 瀏覽
添加回答
舉報(bào)