2017-06-09 2 views
0

Jedes Mal, wenn ich einen Aggregationsbefehl mit einem Textfeld ausführen, erhalte ich die Fehlermeldung, dass ich Fielddate für Textfelder aktivieren muss. Hier ist die Abfrage ich bin Ausführung:Versuchen, Fielddate auf Textfeldern zu aktivieren

GET customers/external/_search 
{ 
    "aggs": { 
    "group_by_date": { 
     "terms": { 
     "field": "city" 
     } 
    } 
    } 
} 

Die offiziellen Fehler, die ich erhalte ist:

"type": "illegal_argument_exception", 
"reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [city] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory." 

Also versuche ich Fielddata zu aktivieren, indem Sie diese Abfrage ausführen:

PUT customers/external/text 
{ 
    "properties": { 
    "city": { 
     "type":  "text", 
     "fielddata": true 
    } 
    } 
} 

Danach Ich versuche, die Aggregationsabfrage auszuführen, zeigt aber immer noch die gleiche Fehlermeldung an. Ich versuche dann, diese Abfrage auszuführen:

PUT customers/external/text 
{ 
    "text": { 
     "properties": { 
     "publisher": { 
      "type": "text", 
      "fielddata": true 
     } 
     } 
    } 
} 

Ich führe dann die Aggregationsabfrage aus, aber es zeigt immer noch die gleiche Nachricht an. Was mache ich falsch?

Antwort

1

Ihre Abfrage zum Aktivieren von Felddaten sieht für mich falsch aus. Ich habe ein minimales Beispiel einschließlich GET customers/external/_mapping Anrufe erstellt die tatsächliche Zuordnung zu überprüfen:

PUT customers/external/1 
{ 
    "city": "San Francisco" 
} 
PUT customers/external/2 
{ 
    "city": "San Antonio" 
} 
GET customers/external/_mapping 
PUT customers/_mapping/external 
{ 
    "properties": { 
    "city": { 
     "type":  "text", 
     "fielddata": true 
    } 
    } 
} 
GET customers/external/_mapping 
GET customers/external/_search 
{ 
    "aggs": { 
    "group_by_date": { 
     "terms": { 
     "field": "city" 
     } 
    } 
    } 
} 
DELETE customers 

aber dieses Beispiel zeigt auch, warum Sie wahrscheinlich nicht wollen, das zu tun - Sie haben zwei Treffer zu „san“ und dass doesn Es macht keinen Sinn. Schauen Sie sich die Dokumentation an, warum Sie wahrscheinlich use a keyword for this functionality möchten.

Verwandte Themen