Ich schreibe gerade eine Website in JavaScript, die verschiedene Felder aus Daten in ElasticSearch grafisch darstellt, und ich bin auf ein seltsames Problem gestoßen. (Ich möchte Kibana aus verschiedenen Gründen nicht verwenden.)ElasticSearch.js Suchabfrage gibt 0 Treffer zurück, aber generierte URL enthält richtige Treffer
Meine Suchanfrage in JavaScript hat Treffer bis vor einiger Zeit korrekt zurückgegeben. Ich habe keine Änderungen daran vorgenommen, aber plötzlich gibt die Abfrage keine Treffer zurück. Wenn ich jedoch der vom Anruf erzeugten URL folge, erscheinen die gewünschten Treffer.
Hier ist die Abfrage:
client.search({
index: "chamber-data",
type: "Soak1",
size: 1000,
scroll: "30s",
sort: ["_doc"],
_source: ["@timestamp", "datetime", [...this.props.fields]],
body: {
query: {
bool: {
filter: {
range: {
"datetime": {
lte: "now",
gte: "now-12H"
}
}
}
}
}
}
}).then(this.process_promise, this.handle_error);
Hier ist, was das Skript mich in der Konsole meiner Website gibt:
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAA1NrFlZYTEJLYW12UUFTaWowMllJZVcyalEAAAAAAANTbRZWWExCS2FtdlFBU2lqMDJZSWVXMmpRAAAAAAADU28WVlhMQkthbXZRQVNpajAyWUllVzJqUQAAAAAAA1NsFlZYTEJLYW12UUFTaWowMllJZVcyalEAAAAAAANTbhZWWExCS2FtdlFBU2lqMDJZSWVXMmpR",
"took": 0,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
Und hier ist es, was die URL gibt mir:
{"_scroll_id":"DnF1ZXJ5VGhlbkZldGNoBQAAAAAAA1N2FlZYTEJLYW12UUFTaWowMllJZVcyalEAAAAAAANTdBZWWExCS2FtdlFBU2lqMDJZSWVXMmpRAAAAAAADU3cWVlhMQkthbXZRQVNpajAyWUllVzJqUQAAAAAAA1NzFlZYTEJLYW12UUFTaWowMllJZVcyalEAAAAAAANTdRZWWExCS2FtdlFBU2lqMDJZSWVXMmpR",
"took":9,
"timed_out":false,
"_shards":{"total":5,"successful":5,"failed":0},
"hits":
{"total":107565,"max_score":null,"hits":[...]}
}
Ich habe absolut keine Ahnung, was passiert ist, und ich habe keine Ahnung, wie ich es lösen soll. Hat jemand Gedanken?
Ich verstehe nicht, was der Unterschied zwischen Ihren Suchen ist. Ich weiß nicht, was "die URL mir gibt" damit gemeint ist. Vielleicht können Sie ausführlicher sein. Können Sie auch Beispiele für Ihre curl-Abfrage angeben, damit Sie überprüfen können, ob sie im Befehl reproduzierbar sind, ohne zwei verschiedene HTTP-Clients aufzurufen? – alr
Zusätzlich zu @alr können Sie bestätigen, dass die Abfrage, die Sie manuell und von Ihrem js-Programm verwenden, tatsächlich die gleichen sind, wenn sie an den ES-Server gesendet werden? – Adonis
Ich habe die gleiche Situation, wo die gleiche Abfrage (sagen wir, eine 'matchAll'-Abfrage) über den js-Client und einen externen Client (Postman) gibt Null Treffer in einem Fall und ein Bündel in der Sekunde. Wo können Sie Ihr Problem lösen? Ich kann andere APIs (create/delete index, bulk, ...) über den Client js mit Erfolg aufrufen. –