Как я могу преобразовать этот SQL-запрос в запрос Elasticsearch в Visual studio?

#c# #sql #visual-studio #elasticsearch

Вопрос:

Я новичок в запросе Elasticsearch, поэтому я не знаю, как преобразовать этот SQL-запрос в запрос Elasticsearch в visual studio:

 WHERE   
(x IS NOT NULL) AND (y IS NOT NULL) OR
(x IS NOT NULL) AND (z IS NOT NULL) OR
(x IS NOT NULL) AND (q IS NOT NULL) 
 

Я знаю, что запрос Elasticsearch должен быть примерно таким с «Должен» и «Должен», но я уверен, что он далек от правильного синтаксиса, и visual studio выдает мне слишком много красных строк с этим запросом, в котором говорится: «Имя Должно/Существовать/Поле не существует в текущем контексте».

              .Query(q => q
                    .Bool(m => m
                            .Should( s => s
                            .Must(
                         b => b.Exists(t => t.Field(y => y.x)),
                         b => b.Exists(t => t.Field(y => y.y))),

                            .Must(
                         b => b.Exists(t => t.Field(y => y.x)),
                         b => b.Exists(t => t.Field(y => y.z))),

                            .Must(

                         b => b.Exists(t => t.Field(y => y.x)),
                         b => b.Exists(t => t.Field(y => y.q))))
 

Я ценю, если кто-нибудь может помочь мне найти лучший способ преобразовать это место с помощью SQL-запроса в Elasticsearch. Заранее благодарю вас!

Ответ №1:

Это ответ, который сработал для меня, и я любил делиться им с другими.

      .Query(q => q
         .Bool(m => m
            .Must(
                b => b.Exists(t => t.Field(y => y.x)),
                b => b.Bool(t => t
                   .Should(
                       b => b.Term(t => t.y, false),
                       b => b.Term(t => t.z, false),
                       b => b.Term(t => t.q, false))))