Consultar ElasticSearch con Python Requests no funciona bien

Estoy intentando realizar una búsqueda de texto completo en una base de datos de mongodb con el motor de búsqueda elástica, pero me encontré con un problema: no importa qué término de búsqueda ofrezco (o si uso la consulta 1 o la consulta 2), el motor siempre devuelve los mismos resultados. . Creo que el problema está en la forma en que hago las solicitudes, pero no sé cómo resolverlo.

Aquí está el código:

def search(search_term): query1 = { "fuzzy" : { "art_text" : { "value" : search_term, "boost" : 1.0, "min_similarity" : 0.5, "prefix_length" : 0 } }, "filter": { "range" : { "published": { "from" : "20130409T000000", "to": "20130410T235959" } } } } query2 = { "match_phrase": { "art_text": search_term } } es_query = json.dumps(query1) uri = 'http://localhost:9200/newsidx/_search' r = requests.get(uri, params=es_query) results = json.loads( r.text ) data = [res['_source']['api_id'] for res in results['hits']['hits'] ] print "results: %d" % len(data) pprint(data) 

El parámetro params no es para los datos que se envían. Si está intentando enviar datos al servidor, debe utilizar específicamente el parámetro de datos. Si está intentando enviar parámetros de consulta, no debe codificarlos con JSON y simplemente dárselos a params como un dict.

Sospecho que tu primera solicitud debe ser la siguiente:

 r = requests.get(uri, data=es_query) 

Y antes de que alguien me rechace, sí, la especificación HTTP / 1.1 permite que los datos se envíen con solicitudes GET y sí las solicitudes lo admiten.

 search = {'query': {'match': {'test_id':13} }, 'sort' {'date_utc':{'order':'desc'}} } data = requests.get('http://localhost:9200/newsidx/test/_search?&pretty',params = search) print data.json() 

http://docs.python-requests.org/en/latest/user/quickstart/