Выполните запрос к вложенной коллекции в ElasticSearch с помощью NEST в .NET Core - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь выполнить поиск по индексу для следующего объекта:

public class IndexedElement
{

    public Guid Id { get; set; }
    public long RowId { get; set; }
    public IndexedElementType Type { get; set; }
    public string Summary { get; set; }
    public string Description { get; set; }

    public IList<string> Tags { get; set; }

}

Цель - выполнить поиск по свойству Summary или сопоставить любую из строк внутри коллекций Tag * 1004.*

То, что у меня сейчас есть, таково:

    public IEnumerable<IndexedElement> Search(string description)
    {
        var query = GetClient().Search<IndexedElement>(s => s.From(0).Size(5)
            .Query(
                q => q.Term(p => p.Summary, description)
                ||
                q.Nested(n => n.Path(p => p.Tags).Query(q2 => q2.Terms(t => t.Field(f => f.Tags).Terms(description))))                    
            ));

        return query.Documents.ToList();
    }

Но вложенная часть не работает, я не знаю, правильно ли я ее использую или, возможно, мне нужно найти другое решениеза это.

Есть идеи?

Спасибо всем заранее

1 Ответ

0 голосов
/ 27 февраля 2019

Вам не нужно выполнять запрос nested для запроса поля Tags, поскольку каждый тег является только примитивным значением JSON, то есть string.Достаточно будет только запрос terms.

Где потребуется запрос nested, где Tags - это POCO с несколькими свойствами и отображается как тип данных nested.

...