Ich versuche, Volltext-Suche auf einem Mongodb db mit der Elastic Search Engine zu tun, aber ich lief auf ein Problem: egal, welchen Suchbegriff ich (oder wenn ich query1 oder query2) liefert die Engine immer die gleichen Ergebnisse. Ich denke, das Problem liegt in der Art, wie ich die Anfragen stelle, aber ich weiß nicht, wie ich das lösen soll. HierAbfragen von ElasticSearch mit Python-Anfragen funktioniert nicht einwandfrei
ist der Code:
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)
diese Anglotzen Nur schnell ... hat Ihre „fuzzy“ -Klausel Notwendigkeit in einer „Abfrage“ verpackt werden? Also würde die Struktur "Abfrage" werden: {"Fuzzy": {...}}, "Filter": {...}. Kannst du das Ergebnis, das du von deiner Anfrage erhältst, posten, damit wir versuchen können, ob etwas offensichtlich ist? – Phil
Die Anfrage gibt 10 Elemente zurück, egal was ich suche.Ich weiß nicht, was ich falsch mache. – Rod0n
Werden die Daten wirklich zurückgegeben? Sind die Dokumente gültige Dokumente oder etwas anderes? Haben Sie eine einfache URI-Suche probiert, die den Dokumenttyp und den Suchparameter in einem angibt? Beispiel: curl -XGET 'http: // localhost: 9200/newsidx/some_type/_search? Q = art_text: Hallo'. Oder etwas, das ein Tag durchsucht, das nicht Ihr Feld "art_text" ist. Nur versuchen, dir zu helfen, die Dinge zu verengen – Phil