Как запустить вложенный запрос вasticsearch, используя C # NEST HighLevel? - PullRequest
0 голосов
/ 26 июня 2019

Я хочу отфильтровать результат с помощью и / или комбинации дочерних запросов. Как я могу это сделать?

is_active: true
category_id: [1,2,3,4]
brand: "addidas"
SubscriberID=4,
gender: "male"`enter code here`
InvoiceDetails: [
        {
          "ID" : 1,
          "InvoiceID" : 1,
          "Qty" : "1",
          "Rate" : 1
        },
        {
          "ID" : 2,
          "InvoiceID" : 1,
           "Qty" : "1",
          "Rate" : 1
        }]

SQL:

SELECT .... WHERE 
SubscriberID= 4 AND InvoiceDetails.InvoiceID =2
OR (brand='addidas' AND gender='male')

Как написать выше SQL, используя C # NEST HighLevel?

Я нашел вложенный запрос, но не нашел работоспособного примера?

Я пробовал ниже запрос

.Query(q =>
       q.Bool
       (
           b => b.Filter
           (
              f => (
                       f.Term(t => t.Field(fd => fd.SubscriberID).Value(8)) &&
                       f.Term(t => t.Field(fd => fd.CompanyID).Value(2019))
                      && f.Nested(
                                    n => n.Path(p => p.InvoiceDetails)
                                    .Query
                                        (
                                            c => c.Term
                                            (
                                                t => t.Field(fd => fd.InvoiceDetails.FirstOrDefault().InvoiceID).Value("121123")
                                            )
                                        ) 
                                )
                       //f.Term(t => t.Field("InvoiceDetails.InvoiceID").Value("1015312"))
                   )
          )
       )
  )

Insted of Nested query. Если я напишу запрос ниже, он будет работать. Я не думаю, что я ошибся в Nested Query.

f.Term(t => t.Field("InvoiceDetails.InvoiceID").Value("1015312"))

Дополнительная информация: Ниже приведен мой класс POCO, в котором я имею атрибут Nested выше свойства.

 public class Invoice
 {
    public long ID { get; set; }

   [Nested]
   [PropertyName("InvoiceDetails")]
   public List<InvoiceDetails> InvoiceDetails { get; set; }
 }


public class InvoiceDetails
{
    public long ID { get; set; }

    [Number(NumberType.Long, Name = "InvoiceID")]
    public long InvoiceID { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...