ich ein Benutzerdokument mit einem Feld Erfahrungen genannt habe, die ein Array von Objekten, wie zB:Elasticsearch verbinden Bereich und Ausdruck zu gleiches Array-Element
{
"experiences": [
{
"end_date": "2017-03-02",
"is_valid": false
},
{
"end_date": "2015-03-02",
"is_valid": true
}
]
}
Mit diesem Dokument Ich habe Benutzer suchen, wo Ende Datum ist im letzten Jahr und is_valid ist wahr. Zu diesem Zeitpunkt habe ich eine Abfrage -> bool und ich füge hinzu zwei dort muss man Bereich für die end_date und ein Begriff für die is_valid.
{
"query": {
"bool": {
"must": {
"term": {
"experiences.is_valid": true
},
"range": {
"experiences.end_date": {
"gte": "now-1y",
"lte": "now"
}
},
}
}
}
}
Das Ergebnis ist, dass dieser Benutzer ausgewählt, weil er eine end_date im letzten Jahr (die erste exp.) Und eine andere exp. mit is_valid wahr. Natürlich ist das nicht, was ich brauche, denn ich brauche das end_date und is_valid muss auf das gleiche Objekt verwiesen werden, aber wie können wir das auf Elasticsearch tun?
Mapping:
"experiences": {
"properties": {
"comment": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"end_date": {
"type": "date"
},
"id": {
"type": "long"
},
"is_valid": {
"type": "boolean"
},
"start_date": {
"type": "date"
}
}
}
Share-Mapping Ihres Index .. 'GET Index/Typ/_mapping'. Ich denke, die Erfahrung ist vom Typ "Objekt". – Richa
Hinzugefügt, aber es gibt keine "Art" für Erfahrungen ... – Grork
Standard ist "Objekt" .. :) – Richa