как получить данные с помощью упругого поиска, когда они находятся в условиях «И-ИЛИ» (построитель запросов) - PullRequest
0 голосов
/ 24 июня 2019

Например, если мне нужно было извлечь результаты из сопоставления текста из всех полей "(userId ИЛИ currentUserId) И (customeromerId ИЛИ customercode ИЛИ customerbacth) И (customerph или customer addrss) И customercity".

Если я использую приведенный ниже код, я получаю результаты, которые соответствуют ключевым словам независимо от условий AND OR.

 $queryMsg = ['query_string' => ['query' => $query]];

Но я хочу получить результаты, например,должна быть выбрана запись, которая соответствует userId или currentUserId и customeromerId.

Пожалуйста, помогите мне, как написать запрос в упругом поиске, чтобы я мог получить результаты.

Заранее большое спасибо.

1 Ответ

0 голосов
/ 24 июня 2019
{
"query" : {
    "must" : [
        {
            "bool" : {
                "should" : [
                    {
                        "match" : {'userId' : id}

                    },
                    {
                        "match" : {'currentUserId' : id}
                    }
                ],
                "minimum_should_match" : 1
            }
        },
        {
            "bool": {
                "should": [
                    {
                        "match": {'customeromerId': code}

                    },
                    {
                        "match": {'customercode': code}
                    },
                    {
                        "match": {'customerbacth': code}
                    }
                ],
            "minimum_should_match" : 1
            },
        },
        {
            "bool": {
                "should": [
                    {
                        "match": {'customerph': address}

                    },
                    {
                        "match": {'customer addrss': address}
                    }
                ],
                "minimum_should_match" : 1
            }
        },
        {
            "bool" : {
                "must" : {
                    "customercity" : city
                }
            }
        }
    ]
}

}

...