Как выполнить поиск по подстроке, используя эластичный? - PullRequest
0 голосов
/ 08 октября 2018

У меня есть green elephant в упругом, и я хочу сопоставить первые два комментария от queries: green elephant is here и white and green elephant

await self.upload_to_elastic('green elephant')

queries = ('green elephant is here',
           'white and green elephant',
           'white and green and gray elephant'
           'elephant green',
           'green is my elephant name',
           'green',
           'green elephants')

for query in queries:
    items = await service.search_by_phrase(query)

Каков способ поиска по этой подстроке

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Вам нужно использовать фразу, соответствующую с наклоном 0 (по умолчанию), чтобы сопоставлять только последовательные термины в правильном порядке.

GET /_search
{
    "query": {
        "match_phrase" : {
            "message" : "green elephant"
        }
    }
}

Подход с помощью регулярных выражений является функциональным, но нежизнеспособным в производственном процессе, поскольку запросы регулярных выражений действительно потребляют много ресурсов.

0 голосов
/ 08 октября 2018

Если ваш запрос касается значения в поле message, вы можете просто использовать regexp:

{
    "query": {
        "regexp":{
            "message": {
                "value": ".*(green elephant).*"
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...