Что представляет собой Elasticsearch эквивалент отрицательного утверждения «LIKE» или «CONTAINS»? - PullRequest
0 голосов
/ 30 июня 2018

Я хотел бы сделать Elasticsearch эквивалент следующего оператора SQL:

ВЫБРАТЬ * ОТ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ ИМЯ НЕ НРАВИТСЯ '% что-то%'

Меня не волнует эффективность или результативность ... Это выполняется только в некоторых случаях. Я использую синтаксис тела запроса.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Используйте обычный шаблонный запрос и отмените его, используя bool must_not запрос .

GET Users/_search
{
    "query": {
        "bool": {
            "must_not": [{
                "wildcard": {
                    "UserName": {
                        "value": "*something*"
                    }
                }
            }]
        }

    }
}
0 голосов
/ 30 июня 2018

Я не уверен, что ваши пользователи являются вашим индексом в вас, Elastic - но в любом случае это основная идея:
Вы можете выполнить запрос regexp, используя Complement - "~" для отрицания:

GET Users/_search
{
    "query": {
        "regexp":{
            "UserName": {
                "value": ".*~(something).*"
            }
        }
    }
}

Для более полезной ссылки, вы можете проверить здесь
P.S:
Вы не получите лучшую производительность, но она справится с работой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...