2017-05-27 7 views
-1

Hier ist meine JSON ....Wie suchen/Filter für genaue mehrere Werte

[{ 
    "course_id": 1, 
    "courseintakes": "Trimester 1; Trimester 2; Trimester 3" 
}, { 
    "course_id": 2, 
    "courseintakes": "Trimester 1; Trimester 2" 
}, { 
    "course_id": 3, 
    "courseintakes": "Trimester 2; Trimester 3" 
}, { 
    "course_id": 4, 
    "courseintakes": "Trimester 1; Trimester 3" 
}, { 
    "course_id": 5, 
    "courseintakes": "Trimester 3" 
}] 

Was ich versuche, das zu tun ist, wenn jemand auf Trimester 1 oder Trimester Suche 2, sollte es zurückgeben Kurs mit id 1, 2, 3 und 4, aber nicht 5.

Wenn jemand Suche auf Trimester 1 oder Trimester 3, solle es natürlich mit der ID 1, 2, 3, 4 und 5.em

zurückkehren Ich habe versucht terms query und match query.

terms query liefert keine Ergebnisse. match query Ergebnisse zurückgeben, aber es ist nicht präzise genug.

Kann jemand bitte beraten, was ist der beste Weg, dies zu tun?

Dank

+0

Bitte teilen Sie die Zuordnung und ES Version – Richa

+0

Alle jetzt sortiert ... Gefunden die komplette Lösung hier https://stackoverflow.com/questions/44227658/elasticsearch-pattern-analyser-not-working – Slyper

Antwort

1

Können Sie Ihre elastischen Abfrage idealerweise sollte er

{ 
    "size": <size>, 
    "_source": <fields to retrieve>, 
    "query": { 
     "terms": { 
      "courseintakes": [<query_terms>, <query_terms>] 
     } 
    } 
} 

Verwendung _Source zum Ausfiltern zurück Felder sein teilen. überprüfen Sie auch, welche Zuordnung Sie haben. Idealerweise sollten Sie nicht analysierte Felder für Kurseingaben haben und wenn Sie analysierte Felder haben möchten, dann überlegen Sie sich eigene Analysatoren für die Feldkurseinträge zu erstellen, die das Wort auf der Basis von ";"

+0

@KuldeepKRishi Ich habe den Brauch Analysator, bitte sehen Sie diese ähnliche Frage Ich fragte vor ein paar Tagen https://stackoverflow.com/questions/44149335/elasticsearch-filtering-matching-multiple-phrases – Slyper