Elasti c условие поиска - PullRequest
       77

Elasti c условие поиска

0 голосов
/ 06 августа 2020

Здравствуйте, я запуталась в состоянии в поиске по эластичности c. Код работает нормально, если параметр не пуст, если параметр не передан методу, как я могу обработать этот запрос типа bool.

def elastic_search(category=None):
    client = Elasticsearch(host="localhost", port=9200)
    query_all = {
        'size': 10000,
        'query': {
            "bool": {
                "filter": [
                    {
                        "match": {
                            "category": category
                        }
                    }]
               },
        }
    }
    resp = client.search(
        index="my-index",
        body=query_all
        )
    return resp

1 Ответ

0 голосов
/ 06 августа 2020

Вам нужно использовать match_all, если category is None ... просто создайте свой запрос условно в зависимости от значения категории.

Что-то вроде этого должно работать

def elastic_search(category=None):
    client = Elasticsearch(host="localhost", port=9200)

    query_all = {
        'size': 10000,
        'query': {}
    }

    if category is None:
        query_all['query']['match_all'] = {}
    else:
        query_all['query']['bool'] = {
             "filter": [
               {
                 "match": {
                   "category": category
                 }
               }
             ]
        }

    resp = client.search(
        index="my-index",
        body=query_all
        )
    return resp
...