Varolan sorguyu Arttırılması Elasticsearch NEST

oy
0

Bizim elastik sorguları oluşturmak için karmaşık bir sisteme sahip. Biz gibi nesneler var QueryBuilderolduğunu bize dinamik ihtiyaca dayalı elastik sorgu oluşturmanıza yardımcı olur. Yani bizim filtreleme şöyle yapılar kullanılarak inşa edilmiştir:AllFilters &= Query<TModel>.Must(requirement);

Sonra bizim sorgu oluştururken biz bunu, nerede sdbir olduğunu SearchDescriptor<TModel>:

        var fullQuery = Query<TModel>.Bool(b => b
            .Must(m => m
                .Bool(b2 => b2
                    .Must(Filter, OrFilter)
            )));

        sd = sd.Query(_ => fullQuery);

Benim sorum, nasıl doğru bu sorguya artırılması eklerim edilir?

Ben bir yapı gibi var List<QueryContainer> AllBoostsben şöyle numaralandırmak:

    protected IEnumerable<QueryContainer> GetBoosts()
    {
        if (Boosts.OrEmptyIfNull().Any())
        {
            foreach(var boost in Boosts)
            {
                yield return Query<TModel>.Boosting(b => b.Boost(2).Positive(p => boost));
            }
        }
    }

Ve sonra deneyin &=içine o SearchDescriptor, ancak bu sonuç verir:

        var fullQuery = Query<TModel>.Bool(b => b
            .Must(m => m
                .Bool(b2 => b2
                    .Must(Filter, OrFilter) //these are filters we've built up with conditions in the code
            )));

        //here i enumerate boosts defined in the class
        foreach (var boost in GetBoosts())
            fullQuery &= boost; //should this be &=, |=, or something else?

        sd = sd.Query(_ => fullQuery);

Çıktı sorgusu:

{
  from: 0,
  size: 50,
  sort: [
    {
      name: {
        order: asc
      }
    }
  ],
  query: {
    bool: {
      must: [
        {
          //various must clauses from class properties / settings here
        },
        {
          boosting: {
            boost: 2.0,
            positive: {
              nested: {
                query: {
                  terms: {
                    companies.id: [
                      500086674
                    ]
                  }
                },
                path: companies
              }
            }
          }
        }
      ]
    }
  }
}

Filtrelerin orijinal birikmesini değiştirmeden benim sorguya artırır birleştirmek için doğru yolu nedir? Elastik sürüm 5.4

Oluştur 27/11/2018 saat 18:19
kaynak kullanıcı
Diğer dillerde...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more