Поиск ElasticSearch с помощью строки запроса и проверки другого поля - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно перевести следующий запрос SQL в запрос ES:

SELECT * 
FROM SKILL 
WHERE SKILL.name LIKE 'text' and SKILL.type = 'hard'

Я попробовал следующее, используя библиотеку "asticsearch "для python3:

query = self.__es.search(index="skills", 
    body={"from" : skip, "size" : limit, 
    "query": 
        {"query_string": 
            {"query": 'text'}
        })

, и это сработало хорошо,Но сейчас я не знаю, как проверить, что поле «type» равно «hard».Как я могу это сделать?

Спасибо.

1 Ответ

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

Вы должны использовать запрос bool и в части "must" поместить два запроса: полный текст и термин один:

{
    "query": {
        "bool": [{
            "match": {
                "name": "this is a test"
            }
        }, {
            "term": {
                "type": "hard"
            }
        }]
    }
}

Перед этим вы должны сохранить свойство типа какполе ключевого слова.

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