2017-04-18 51 views
1

我在我的elasticsearch中编入了索引文档。样本文件看起来像这样:Elasticsearch:在索引数据上应用小写

{ 
    "_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 
    } 
    } 

我想小写所有出现在游戏场“主题标签”因为我已经索引的所有文件的主题标签。 例如,我会有: “hashtags”:[“#Catholic”] - >“hashtags”:[“#catholic”] 更新每个关键字到其小写等价物的最佳方式(减少时间消耗)保存“#”)?

+0

你试过做什么? – depperm

+0

他们是否都遵循相同的结构? –

+0

@depperm其实我的解决方案是总重新索引,但我想知道如果有替代 – mel

回答

0

如果您使用ES 5.0或更高版本,则会引入一种称为“无痛”的脚本语言。这可能会帮助您更新字段。它的处理速度非常快。

点击查看下方链接了解更多信息。

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

+0

“版本”:{ “number”:“5.2.1”, “build_hash”:“db0d481”, “build_date”:“2017-02-09T22:05:32.386Z”, “build_snapshot”:false, “lucene_version”:“6.4.1” } – mel

+0

您能否提供更具描述性的例子? – mel

+0

//尝试这样的事情 POST processed_tweets /加工/ _update_by_query { “脚本”:{ “郎”: “无痛”, “内联”:“ctx._source.hashtags = ctx._source.hashtags.replaceAll (/#* /,m - > m.group()。toUpperCase(Locale.ROOT))“ } } – Renukaradhya