как обобщить эластичный код поиска для более чем 3 навыков - PullRequest
0 голосов
/ 04 июля 2019

В настоящее время мой эластичный поисковый запрос может работать с 3 навыками. Как я могу обобщить этот нижеприведенный запрос для любого количества умений

Для более быстрого решения я продублировал код для каждого навыка.

def results(indexedfiles, query_skills_list):

    if len(query_skills_list) == 3:
        search_results = indexedfiles.search(
            index="indexed_rem",
            doc_type="rem1",
            body={
                "_source": ["Filename", "SkillsFound"],
                "from": 0,
                "size": 10,
                "query": {
                    "bool": {
                        "must": [
                            {"match_phrase": {"SkillsFound": query_skills_list[0]}},
                            {"match_phrase": {"SkillsFound": query_skills_list[1]}},
                            {"match_phrase": {"SkillsFound": query_skills_list[2]}},
                        ]
                    }
                },
            },
        )

    return search_results

Как я могу обобщить этот код для любого количества умений?

1 Ответ

0 голосов
/ 04 июля 2019

Создайте список обязательных предложений, в котором ваш счетчик навыков - SKILLS_COUNT.

must_query = [{'match_phrase': {'SkillsFound': query_skills_list[i]}} for i in range(SKILLS_COUNT)]

и установите его в своем коде с помощью 'must': must_query.

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