2017-06-30 5 views
0

Ich versuche, einen gefilterten Index Alias ​​in Elastic 2.XElasticsearch Bereich und Zeitfilter

Im Folgenden zu erstellen gibt mir alle Jugendlichen unabhängig vom Geschlecht. Ich möchte nur die Weibchen in diesem Filter sehen. Diese

ist das, was ich versuche, den Index Alias ​​zu erstellen:

"add" : { 
     "index" : "myindex", 
     "alias" : "teenage_female", 
     "filter" : 
     { 
      "bool" : 
      { 
       "must" : 
       [    
        { "term": { "gender": "female" } }, 
        { "range": { "age": { "gt": "12", "lt": "20" } } } 
       ] 
      } 
     } 
    } 
} 

ich auf diese Frage ausgesehen haben, die die gleiche Antwort aber scheint zu sein, es ist etwas falsch in meinem JSON sein muss.

Elasticsearch connect range and term to same array item

Antwort

1

Der Filter kann kein Array sein, es sei denn, er ist in ein "bool" mit "must" verpackt. richtig

Der folgende Filter arbeitet:

"filter" : 
    { 
    "bool" : 
    { 
     "must" : 
     [ 
     { "term": { "gender": "female" } }, 
     { "range": { "age": { "gt": "12", "lt": "20" } } } 
     ] 
    } 
    } 
0

ich hier ein wenig bin zu raten, sondern nach dem Filtered Index Aliases docs, funktioniert die Add alias Anfrage mit filter context (im Gegensatz Kontext abfragen)

starten:

"add" : { 
    "index" : "myindex", 
    "alias" : "teenage_female", 
    "filter" : [    
     { "term": { "gender": "female" } }, 
     { "range": { "age": { "gt": "12", "lt": "20" } } } 
    ] 
} 
+0

Ich verstehe, warum das funktionieren sollte, aber es funktioniert nicht. Wenn ich nach dem Hinzufügen die Index-Aliase abrufe, hat sie nur den zweiten Bereichswert als Filter und nicht den Geschlechtsbegriff. Ich habe gelöscht und neu erstellt und es ist das gleiche Ergebnis. Der erste Teil des Filters wird bei der Erstellung des Alias ​​ignoriert. – Kevin

Verwandte Themen