ElasticSearch NEST simple Условия запроса требует .keyword - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь получить один документ с именем secifi c (именно это имя), используя NEST 7.5.1 (. NET Core 3.1):

var queryByTerm = client.Search<SomeDto>(s =>s.Query(q => q.Term(p => p.NameField, "example name")));

Но это не так вернуть любые документы (вызов успешен).

Фактический отправляемый запрос (как видно из DebugInformation с .EnableDebugMode для клиента ConnectionSettings):

{"query":{"term":{"nameField":{"value":"example name"}}}}

Но это только работает (в Кибане), когда я добавляю .keyword для nameField:

{"query":{"term":{"nameField.keyword":{"value":"example name"}}}}

Должен ли я каким-то образом заставить NEST использовать nameField.keyword вместо nameField?

1 Ответ

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

Вы можете сделать это с помощью .Suffix() метода расширения. Документы .

var queryByTerm = client.Search<SomeDto>(s =>s.Query(q => q.Term(p => p.NameField.Suffix("keyword"), "example name")));

Надеюсь, это поможет.

...