Betrachte unter Stop-Feld ist das Timestamp-Feld.ElasticSearch 5. *, Abfrage für: Feld nicht vorhanden oder wenn vorhanden Wert sollte dies sein
Ich möchte mit folgenden Zustandsdaten filtern:
- Stoppfeld existieren nicht
- oder Feldwert zu stoppen ist> = jetzt
Ich weiß, ich sollte must_not verwenden, kann aber nicht finde heraus, wie.
Ich möchte einige Scoring auf Kind-Typ und verwenden Sie diese Punktzahl, um Eltern zu sortieren, dann filtern Eltern über Stop-Feld.
GET indexName/parentType/_search
{
"query": {
"bool": {
"must": [
{
"has_child": {
"type": "child-type",
"score_mode": "max",
"query": {
"function_score": {
"functions": [
{
"script_score": {
"script": {
"file": "score-analytics",
"lang": "expression"
}
}
}
]
}
}
}
},
{
"bool": {
"should": [
{
"range": {
"stop": {
"gte": "now"
}
}
}
]
}
}
]
}
}
}
Ich bekomme das gewünschte Ergebnis mit unten Filter aber immer noch auf der Suche nach etwas besser. {"bool": {"sollte": [{"range": {"stop": {"gte": "jetzt"}}}, {"bool": {"must_not": [{"exists": { "field": "stop"}}]}}]}} –
Die Abfrage in Ihrem Kommentar ist genau die, die Sie benötigen. Sie müssen auch '" minimum_should_match ": 1' hinzufügen – Val