Написание запроса Elasticsearch Nest Bool со значением поля Must - PullRequest
2 голосов
/ 14 января 2020

Я пытаюсь воспроизвести следующий запрос, который прекрасно работает в Кибане:

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "fake"
          }
        }
      ],
      "filter": {
        "term": {
          "roleIds": "af54122f-8d99-47e5-9e5a-88659a1229d4"
        }
      }
    }
  }
}

Вот моя попытка. NET:

ISearchResponse<T> response = await client.SearchAsync<T>(s => s
    .Query(q => q
        .Bool(b => b
            .Must(m => m
                .Match(t => t
                    .Field(new Field("title"))
                    .Value("fake") // "Value" is red.
                ))
        .Filter(f => f
            .Term(t => t
                .Field(new Field("roleIds")).Value(RoleId))) // Value works here.
          )); 

Значение не работает Вот. Ошибка компилятора:

Error   CS1061  'MatchQueryDescriptor<T>' does not contain a definition for 'Value' and no accessible extension method 'Value' accepting a first argument of type 'MatchQueryDescriptor<T>' could be found (are you missing a using directive or an assembly reference?)

Как мне написать эквивалент bool > must > match > title: val?

1 Ответ

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

Просто замените .Value("fake") на .Query("fake"). Как примечание стороны, вы можете siplify .Field(new Field("title")) с .Field("title").

Надеюсь, что помогает.

...