首页 > 解决方案 > 如何通过检查长度从字典中创建动态查询

问题描述

字典如下。下面是长度为 2 和 3 的示例字典。通过检查条件需要动态生成查询

一个=[{'data': 'abc'}, {'prod': 'def'}]

     "query": {
       "bool": {
         "should": [
           {
             "query_string": {
               "query": "*abc*",
               "fields": [
                 "data"
               ]
             }
           },
           {
             "query_string": {
               "query": "*def*",
               "fields": [
                 "prod"
               ]
             }
           }
         ]
       }
     }
   }

一个=[{'data': 'abc'}, {'prod': 'def'},{'email': '@gmail'}]

基本上如果字典继续添加{"query_string": {"query": "*@gmail.com*","fields": ["email"]}} 查询也继续添加

标签: pythondictionary

解决方案


使用简单的迭代。

前任:

a = [{'data': 'abc'}, {'prod': 'def'}]
result = {"query": {
       "bool": {
         "should": []
         }
       }
}

for item in a:
    for k, v in item.items():
        result['query']['bool']['should'].append({
            "query_string": {
            "query": f"*{v}*",
            "fields": [
                 k
               ]}
             })
print(result)

输出:

{'query': {'bool': {'should': [{'query_string': {'fields': ['data'],
                                                 'query': '*abc*'}},
                               {'query_string': {'fields': ['prod'],
                                                 'query': '*def*'}}]}}}

推荐阅读