Возможно ли выравнивание частей объекта при автоматическом отображении - PullRequest
0 голосов
/ 06 июля 2018

Я новичок в использовании Elasticsearch и использую поиск по службам, где часть результата, который я получаю, отформатирована следующим образом (имена переведены с другого языка):

accounting: {
    properties: {
        accountingInterval: {
            properties: {
                endDate: {
                    type: "date",
                    format: "dateOptionalTime"
                },
                startDate: {
                    type: "date",
                    format: "dateOptionalTime"
                }
            }
        }
    }
}

Я могу автоматически сопоставить его с таким объектом без проблем:

class MyBaseObject
{
    public Accounting Accounting { get; set; }
    //...some other values on base object
}

class Accounting
{
    public AccountingInterval AccountingInterval { get; set; }
}

class AccountingInterval
{
    [Date(Format = "dateOptionalTime")]
    public DateTime? StartDate { get; set; }
    [Date(Format = "dateOptionalTime")]
    public DateTime? EndDate { get; set; }
}

Есть ли способ заставить его отобразить простой объект, подобный этому:

class MyBaseObject
{
    [Date(Format = "dateOptionalTime")]
    public DateTime? AccountingStartDate { get; set; }
    [Date(Format = "dateOptionalTime")]
    public DateTime? AccountingEndDate { get; set; }
    //...some other values on base object
}

Я попытался установить атрибут имени, но он не работает

class MyBaseObject
{
    [Date(Name ="accounting.accountingInterval.startDate", Format = "dateOptionalTime")]
    public DateTime? AccountingStartDate { get; set; }
    [Date(Name ="accounting.accountingInterval.endDate", Format = "dateOptionalTime")]
    public DateTime? AccountingEndDate { get; set; }
    //...some other values on base object
}

1 Ответ

0 голосов
/ 08 июля 2018

Как сказал Panchicore в комментариях, было бы возможно выполнить это выравнивание во время индекса с помощью Входного узла и конвейеров , и отображение типов в индексе будет отражать эту структуру.

Если вы не отвечаете за индексацию, то это сложнее сделать. Отображение в NEST используется как для ввода, так и для вывода документов из Elasticsearch. Можно было бы контролировать способ десериализации JSON до MyBaseObject, подключив пакет Nest.JsonSerializer nuget и , используя Json.NET в качестве сериализатора для клиента , и определяя пользовательский JsonConverter для типа MyBaseObject. Если вы хотите сделать это только для эстетики шрифта, возможно, это больше, чем значение!

...