如何概括3种以上技能的弹性搜索代码

时间:2019-07-04 04:15:09

标签: python elasticsearch

目前,我的弹性搜索查询最多可以使用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 :(得分:0)

创建您的must子句列表,其中技能计数器为SKILLS_COUNT。

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

并使用'must': must_query在代码中进行设置。