Как получить отображение для индекса в гнезде elasticsearch?
Я написал следующие функции и получаю ответ, как показано ниже:
public async Task<GetMappingResponse> ShowMapping(string indexname)
{
var result =await _client.Indices.GetMappingAsync(new GetMappingRequest(indexname));
return result;
}
Отклик:
{
"apiCall": {
"auditTrail": [
{
"event": 5,
"node": {
"clientNode": false,
......
......
"name": null,
"settings": {},
"uri": "http://localhost:9200/"
},
"path": "pure/_mapping",
"ended": "2020-01-22T11:25:48.2324298Z",
"started": "2020-01-22T11:25:47.836833Z",
"exception": null
}
],
"debugInformation": "Successful (200) low level call on GET: /pure/_mapping\r\n# Audit trail of this API call:\r\n - [1] PingSuccess: Node: http://localhost:9200/ Took: 00:00:00.1716082\r\n - [2] HealthyResponse: Node: http://localhost:9200/ Took: 00:00:00.3955968\r\n# Request:\r\n<Request stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>\r\n
#Response:\r\n{\"pure\":{\"mappings\":{\"properties\":{\"ID\":{\"type\":\"integer\"},\"Name\":{\"type\":\"text\"},\"category\":{\"type\":\"nested\",\"properties\":{\"catid\":{\"type\":\"integer\"},\"catname\":{\"type\":\"text\"}}}}}}}\r\n",
"deprecationWarnings": [],
..........
..........
"uri": "http://localhost:9200/pure/_mapping",
"connectionConfiguration": {}
}
}
Как видите, в поле информации об отладке есть требуемый мной ответ, может ли кто-нибудь помочь мне, как получить такой формат сопоставления, как в кибане.
Требуемый ответ:
{
"pure": {
"mappings": {
"properties": {
"ID": {
"type": "integer"
},
"Name": {
"type": "text"
},
"category": {
"type": "nested",
"properties": {
"catid": {
"type": "integer"
},
"catname": {
"type": "text"
}
}
}
}
}
}
}
1 ответ
Решение
С NEST ответ JSON десериализуется в тип.NET для работы, в этом случае GetMappingResponse
. Вы можете перебирать свойства этого типа, чтобы проверить сопоставление.
Если вы предпочитаете получать ответ JSON в виде строки, вы можете использовать для этого низкоуровневый клиент. Клиент низкого уровня отображается на клиенте высокого уровня (NEST)
var client = new ElasticClient();
var indexName = "pure";
var response = client.LowLevel.Indices.GetMapping<StringResponse>(indexName);
// the JSON string response
var jsonMapping = response.Body;