Как использовать «фильтр» в запросе Elasticsearch с Python? - PullRequest
0 голосов
/ 06 ноября 2018

Вот мой код:

import requests
from elasticsearch import Elasticsearch
res = requests.get('http://localhost:9200')
print(res.content)

es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

es.search(index="sw", body={"query":{"bool":{"must":{"match":{'skin_color':'fair'}"filter":{'height':'170'}}}}})

И МОЯ ОШИБКА ВЫХОДА:

Файл "", строка 1 es.search (index = "sw", body = {"query": {"bool": {"must": {"match": {'skin_color': 'fair'} "filter": {'height': '170'}}}}}) ^ SyntaxError: неверный синтаксис

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Я думаю, вы можете попробовать это: потому что я проверяю ваш запрос в "Kibana Dev Tools" и он говорит, что вам не разрешено использовать "фильтр" в разделе "обязательно".

{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "skin_color": "fair"
          }
        }
      ],
      "filter": {'height':'170}
    }
  }
}
0 голосов
/ 06 ноября 2018

Оформление документации . Исходя из этого, я подозреваю, что ваш запрос должен быть:

{
    "query": {
      "bool": {
         "must": {
            "match": {
                "skin_color": "fair"
            }
          },
          "filter": {
               "match": {
                   "height": "170"
               }
          }
      }
   }
}
0 голосов
/ 06 ноября 2018

Привет, это синтаксическая ошибка

пожалуйста, отметьте это

 from elasticsearch import Elasticsearch
es = Elasticsearch([{'host': 'your_host', 'port': 9200}])

q = {"filter": 
        {"term": 
            {"job desc": "Data Analyst"}
        },
     "_source": {
            "include": ['job place']
        }
    }
# Assume you want "Data Analyst" in the "job desc" field

result = es.search(index='my_index', doc_type='job_list', body=q)

Это будет работать здесь

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