Как получить отображение для индекса в гнезде эластичного поиска? - PullRequest
0 голосов
/ 22 января 2020

Я написал следующие функции и получил ответ, как показано ниже:

  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 Ответ

1 голос
/ 24 января 2020

При использовании 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;
...