c# - Гнездо - Создание запроса ElasticSearch с перегрузкой оператора и инициализацией объекта - PullRequest
0 голосов
/ 21 января 2020

Я использую ElasticSearch v6.4.2 и пытаюсь построить запрос следующим образом:

query
|___bool
    |___must
    |   |__multimatch
    |___fiter
        |___bool
            |___must
            |___mustNot
            |___should
            |   |___bool    
            |       |___must
            |       |___must
            |       |___must
            |           |___bool
            |               |___should
            |               |___should
            |___should
                |___bool
                    |___must
                    |___must
                        |___bool
                            |___should
                            |___should

Я строю запрос выше с помощью следующего кода:

var searchQuery = new SearchRequest
{
    Query = AddMultiMatchQuery("search") 
        &&
            +
            (
            AddTermQuery("documentLevel", documentLevel) &&
            !AddTermQuery("moduleNumber", 4) &&
            ((
                AddTermQuery("coverDateStartSpecified", true) 
                && 
                AddTermQuery("coverDateEndSpecified", true) 
                && 
                (
                AddNumericRangeQuery("coverDateStartYear", 1946, 1975) 
                || 
                AddNumericRangeQuery("coverDateEndYear", 1946, 1975)
                )
            ) 
            ||
            (
                AddNumericRangeQuery("coverDateYear", 1946, 1975) 
                && 
                (
                AddTermQuery("coverDateStartSpecified", false) 
                || 
                AddTermQuery("coverDateEndSpecified", false)
                )
            )
            )
            )


};

где функциям нравится название функций, предлагаемых.

Но когда я строю вышеуказанный запрос с кодом, результат будет таким:

query
|___bool
    |___must
    |   |__multimatch
    |___fiter
        |___bool
            |___must
            |   |__bool
            |       |___must
            |       |___must_not
            |___must
                |___bool
                    |___should
                    |   |___bool
                    |       |___must
                    |       |   |___bool
                    |       |       |___must
                    |       |       |___must
                    |       |___must
                    |           |___bool
                    |               |___should
                    |               |___should
                    |___should
                        |___bool
                            |___must
                            |___must
                                |___bool
                                    |___should
                                    |___should  

Я не видел нигде, где есть были примеры построения запросов с этими многочисленными фильтрами https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/bool-queries.html. Что я делаю неправильно? Пожалуйста помоги. Заранее спасибо !!!!

...