Ich habe gerade mit der Verwendung von Elastic Search begonnen. Ich habe alles richtig eingerichtet. Ich verwende Firebase + Flashlight + Elastic Search.Seltsame Ausgabe Abfrage Elastische Suche
In meinem Frontend erstelle ich Abfragen basierend auf verschiedenen Suchparametern. Ich füge sie in einen Knoten in Firebase /search/requests/
ein. Taschenlampe wird dies aufheben und die Antwort in /search/response
setzen, das funktioniert wie ein Charme!
Allerdings bin ich mir nicht sicher, wie ich meine Abfragen richtig schreiben. Ich bekomme merkwürdige Ergebnisse, wenn ich versuche, zwei must
match
Abfragen zu kombinieren. Ich benutze Query DSL.
Meine Dokumente in Elastic Search unter deliverables/doc
haben das folgende Schema.
...
{
"createdBy" : "[email protected]",
"createdOn" : 1501200000000,
"deadLine" : 1508716800000,
"description" : {
"value" : "dummy description"
},
"key" : "<FBKEY>",
"programmes" : [ {
"code" : "95000",
"name" : "Test programme",
"programYear" : 2017
} ],
"projects" : [ {
"projectCode" : "113200",
"projectName" : "Test project",
"projectYear" : 2017
} ],
"reportingYear" : 2017,
"status" : "Open",
"type" : "writing",
"updatedBy" : "[email protected]",
"updatedOn" : 1501200000000,
},
...
Meine Abfrage hat die folgende Struktur.
{
"query": {
"bool": {
"must": [
{
"match": {
"createdBy": "[email protected]"
},
"match": {
"programmes.code": "95000"
}
}
]
}
}
}
In meiner Ausgabe bekomme ich auch Dokumente, die genau diese beiden Felder nicht haben? Sie haben auch eine sehr niedrige Punktzahl. Ist das normal?
Mein Mapping, erstellt automatisch Taschenlampe mit
Update 1
ich diese Abfrage gerade versucht, aber es gibt mir immer noch seltsame Ergebnisse durch nicht Filterung auf beiden Feldern:
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"match": {
"programmes.code": "890000"
}
},
{
"match": {
"createdBy": "[email protected]"
}
}
]
}
}
}
}
}
Vielen Dank Chandra !! Wie konnte ich das verpasst haben ... – Rover
Ich habe gerade versucht, diese Abfrage, aber es gibt mir immer noch seltsame Ergebnisse durch nicht auf beiden Feldern zu filtern. Siehe Update in Start Post – Rover
Eine Modifikation ist, dass Sie 'match' durch' term' ersetzen können, so dass das Feld nicht analysiert wird. –