Ошибка запроса Elasticsearch - [или] запрос искажен, нет начального объекта после имени запроса - PullRequest
0 голосов
/ 01 марта 2019

Может кто-нибудь объяснить мне, пожалуйста, что не так с этим запросом?Мне нужно преобразовать этот сгенерированный запрос из Elasticsearch 2 в Elasticsearch 6. В ES2 этот работает хорошо, но в ES6 он выдает ошибку: [или] запрос искажен, отсутствует start_object после имени запроса .Я потерян в этом.ИЛИ необходимо, потому что может быть больше условий, чем этот.

{
    "query": {
        "bool": {
            "filter": {
                "or": [
                    {
                        "nested": {
                            "path": "zalozcovia",
                            "query": {
                                "bool": {
                                    "filter": [
                                        {
                                            "match": {
                                                "zalozcovia.meno": "\u013dubo\u0161"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.priezvisko": "Majgot"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.mesto": "Trnava"
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    }
                ]
            }
        }
    },
    "size": 20,
    "sort": [
        {
            "rok": "desc"
        },
        {
            "cislo": "desc"
        }
    ]
}

Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Попробуйте поменять "filter-or" с помощью must

{
    "query": {
        "bool": {
              "should" : [
                    {
                        "nested": {
                            "path": "zalozcovia",
                            "query": {
                                "bool": {
                                    "filter": [
                                        {
                                            "match": {
                                                "zalozcovia.meno": "\u013dubo\u0161"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.priezvisko": "Majgot"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.mesto": "Trnava"
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    }
                ]
            }
    },
    "size": 20,
    "sort": [
        {
            "rok": "desc"
        },
        {
            "cislo": "desc"
        }
    ]
}
0 голосов
/ 01 марта 2019

В ES6 нет ни одного запроса "ИЛИ" (https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-or-query.html). Вам следует использовать запрос bool и использовать там часть "следует" (https://www.elastic.co/guide/en/elasticsearch/reference/6.4/query-dsl-bool-query.html).

{
    "query": {
        "bool": {
            "filter": [{
                "bool": {
                    "should": [{
                        "nested": {
                            "path": "zalozcovia",
                            "query": {
                                "bool": {
                                    "filter": [{
                                            "match": {
                                                "zalozcovia.meno": "\u013dubo\u0161"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.priezvisko": "Majgot"
                                            }
                                        },
                                        {
                                            "match": {
                                                "zalozcovia.mesto": "Trnava"
                                            }
                                        }
                                    ]
                                }
                            }
                        }
                    }]
                }
            }]
        }
    },
    "size": 20,
    "sort": [{
            "rok": "desc"
        },
        {
            "cislo": "desc"
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...