#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))))