Как уменьшить данные при ответе от эласта по GET - PullRequest
0 голосов
/ 20 марта 2019

Я запрашиваю данные из эластичного и получаю большую кучу информации.Я хотел бы получить только два свойства со значениями (пары ключ-значение): отметка времени и значение , но я получаю много, всю остальную информацию тоже.Как я могу требовать только мои свойства, которые я хочу?Я пытался, как я читал на astic.co , но я все еще получаю полный набор данных.

Спасибо за поддержку!Фрэнк

Вот мои попытки:

            var result = ElasticClient.Search<_doc>(document =>
            document
            .Source(sf => sf
                .Includes(i => i
                    .Fields(
                        f => f.Timestamp,
                        f => f.Value
                    )
                )
                .Excludes(e => e
                    .Fields(
                    f => f.ContextName 
                    )
                )
            )
            .Query(q => q
                .Match(m => m
                    .Field(f => f.DataRecordId)
                    .Query(search)
                )
            )
        );

Или:

            var result = ElasticClient.Search<_doc>(document =>
            document
            .StoredFields(sf => sf
                .Fields(
                    f => f.Timestamp,
                    f => f.Value
                )
            )
            .Query(q => q
                .Match(m => m
                    .Field(f => f.DataRecordId)
                    .Query(search)
                )
            )
        );

Оба возвращают большой пакет данныхгораздо больше, чем только отметка времени и значение .

1 Ответ

0 голосов
/ 20 марта 2019

Итак, я получаю все свойства, но исключающие из них равны нулю.Я надеюсь, что таким образом уменьшу трафик для лучшей производительности.Я открыт для других решений.Фрэнк

                var result = ElasticClient.Search<_doc>(document =>
                document
                .Source(src => src
                    .Includes(i => i
                        .Fields(
                        p => p.Timestamp,
                        p => p.Value
                        )
                    )
                    .Excludes(e => e
                        .Fields(
                        p => p.ComponentId,
                        p => p.ContextName,
                        p => p.DataRecordId,
                        p => p.ResourceId
                        )
                    )
                )
                .Query(q => q
                    .Match(m => m
                        .Field(f => f.DataRecordId)
                        .Query(search)
                    )
                )
            );
...