Elastic Search Nest C # Синтаксическая ошибка: использование подстановочного знака и множественного совпадения в одном запросе - PullRequest
0 голосов
/ 30 мая 2018

У меня есть запрос, в котором я хочу иметь два предложения: одно для .MultiMatch и одно для .Wildcard.Подстановочный знак не зависит от соответствия.

Я могу заставить их обоих работать по отдельности, но не вместе.Текущее сообщение об ошибке в Visual Studio имеет подчеркнутое слово Wildcard и говорит следующее:

Querycontainer does not contain a definition for 'Wildcard'...

Вот код, который я пытаюсь реализовать.Я попытался поместить .Wildcard и .MultiMatch в отдельные .Should части, но безрезультатно.

.Query(q => q
  .Bool(b => b
    .Should(m => m                             
      .MultiMatch(ma => ma
        .Fields(f => f.Field("_id")
          .Field("elements.location.city")
          .Field("ticket_number")
          )
          .Query(query)
        )
        .Wildcard(c => c
          .Field("name").Value(query.ToLower() + "*")
        )
      )
    )
  )

query, который вы видите в строке 8, передается в эту функцию в качестве аргумента.

Как указывалось выше, проблема связана с строкой 10, поскольку контейнер запросов не знает, что делать с подстановочными знаками.

Любой и все входные данные приветствуются.

1 Ответ

0 голосов
/ 02 июня 2018

Это зависит от того, какое логическое условие вы хотите между запросами MultiMatch и Wildcard?

Например, здесь я ищу записи, которые удовлетворяют обоим MultiMatch И WildCard запросов:

.Query(q => q
    .Bool(b => b
        .Must(m => m
            .MultiMatch(mm => mm
                .Fields(f => f.Field("FieldName"))
                .Query("MyKeyword")

            ), wc => wc
            .Wildcard(c => c
                .Field("FieldName")
                .Value("*Something*")
            )
        )
    )
));

Если вы хотите ИЛИ их, используйте Should вместо Must: см. Использование Bool Query

...