我的ElasticSearch索引中有9000个文档。
我想按照分析的字符串字段进行排序,所以,为了做到这一点,我知道(通过谷歌)我必须更新映射以使字段未被分析,所以我可以按此字段排序,我必须重新 - 再次对数据进行索引以反映映射的变化。
重新索引过程在我的机器上消耗了大约20分钟。
奇怪的是,在非常强大的生产服务器上,重新索引过程消耗了大约2个小时。
我检查了该服务器上的内存状态和处理器使用情况,一切正常。
我想知道的是:
有没有办法按分析的标记化字段对文档进行排序,而无需重新索引整个文档?
如果我必须重新索引整个文档,那么为什么需要花费如此巨大的时间来重新索引服务器上的文档?或如何追踪该服务器上的缓慢原因?
答案 0 :(得分:0)
只要该字段存储在_source中,我就相信每次搜索时都可以使用脚本创建自定义字段。
{
"query" : { "query_string" : {"query" : "*:*"} },
"sort" : {
"_script" : {
"script" : "<some sorting field>",
"type" : "number",
"params" : {},
"order" : "asc"
}
}
}
每次搜索时,这都有重新评估服务器端排序脚本的缺点,但我解决了这个问题(1)。