2017-04-18 4 views
1

Ich habe Dokumente in meinem elasticsearch indiziert. Ein Beispieldokument sieht wie folgt aus:Elasticsearch: Wenden Sie einen Kleinbuchstaben auf indizierte Daten an

{ 
    "_index": "processed_tweets", 
    "_type": "processed", 
    "_id": "830403820580663296", 
    "_score": 1, 
    "_source": { 
     "at": [ 
     "@LouisDasch" 
     ], 
     "original_tweet_id": "830398288352403457", 
     "id_str": "830403820580663296", 
     "trigrams": [ 
     "blessed lourdes lady", 
     "lourdes lady feast", 
     "lady feast day", 
     "feast day wishing" 
     ], 
     "hashtags": [ 
     "#Catholic" 
     ], 
     "id_tweet_creator": "487735029", 
     "tokens": [ 
     "blessed", 
     "lourdes", 
     "lady", 
     "feast", 
     "day", 
     "wishing" 
     ], 
     "bigrams": [ 
     "blessed lourdes", 
     "lourdes lady", 
     "lady feast", 
     "feast day", 
     "day wishing" 
     ], 
     "retweeted": true 
    } 
    } 

würde Ich mag alle Hashtags in Kleinbuchstaben, die in den Bereich „Hashtags“ für die ganze Dokument, das ich indiziert. Zum Beispiel würde ich haben: "hashtags": ["#Catholic"] -> "hashtags": ["#catholic"] Was ist der beste Weg (lesss Zeit consumming), jedes Schlüsselwort auf ihre Kleinbuchstaben Äquivalent (die "#" erhalten)?

+0

Was haben Sie versucht? – depperm

+0

folgen sie alle der gleichen Struktur? –

+0

@depperm Eigentlich meine Lösung ist die gesamte Neuindizierung, aber ich würde gerne wissen, ob es eine Alternative gibt – mel

Antwort

0

Wenn Sie ES 5.0 und höher verwenden, gibt es eine Skriptsprache namens "schmerzfrei", die eingeführt wird. Dies kann Ihnen helfen, die Felder zu aktualisieren. Es ist sehr schnell in der Verarbeitung.

Überprüfen Sie den folgenden Link für weitere Informationen.

https://www.elastic.co/guide/en/elasticsearch/reference/5.0/modules-scripting-painless.html

+0

"Version": { "Nummer": "5.2.1", "build_hash": "db0d481", "build_date": "2017-02-09T22: 05: 32.386Z", "build_snapshot": false, "lucene_version": "6.4.1" } – mel

+0

können Sie ein beschreibendes Beispiel? – mel

+0

// versuchen so etwas wie dieses POST processed_tweets/verarbeitet/_update_by_query { "script": { "lang": "schmerzlos", "inline": „ctx._source.hashtags = ctx._source.hashtags.replaceAll (/ # * /, m -> m.gruppe(). toUpperCase (Locale.ROOT)) " } } – Renukaradhya

Verwandte Themen