Я не совсем понимаю, как синтаксис C # отображается в Query DSL в Elasticsearch.
Рассматривая приведенный пример, я предполагаю, что вы хотите использовать PosData.Serializable(query)
.В этом случае объект запроса (независимо от его типа) будет сериализован в формате JSON и размещен в кластере эластичного поиска без каких-либо изменений.При создании объекта с использованием синтаксиса 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" }
}
}
}
}
}
будет сериализован и передан вasticsearch как
"query": {
"bool": {
"must": {
"term": {
"status": "success"
}
},
"filter": {
"range": {
"date": { "gte": "2018-12-22T00:00:00.000Z" }
}
}
}
}
Таким образом, с помощью низкоуровневого клиента Elasticsearch вы создаете объекты, которые имеют почти 1: 1 отображениеСинтаксис запроса DSL.Вы можете скопировать примеры изastic.co, заменить ":" на "= new", удалить кавычки из имен свойств и, в основном, вот и все.