弹性搜索文档排序,索引问题

时间:2012-03-08 16:13:33

标签: lucene elasticsearch

我的ElasticSearch索引中有9000个文档。

我想按照分析的字符串字段进行排序,所以,为了做到这一点,我知道(通过谷歌)我必须更新映射以使字段未被分析,所以我可以按此字段排序,我必须重新 - 再次对数据进行索引以反映映射的变化。

重新索引过程在我的机器上消耗了大约20分钟。

奇怪的是,在非常强大的生产服务器上,重新索引过程消耗了大约2个小时。

我检查了该服务器上的内存状态和处理器使用情况,一切正常。

我想知道的是:

  1. 有没有办法按分析的标记化字段对文档进行排序,而无需重新索引整个文档?

  2. 如果我必须重新索引整个文档,那么为什么需要花费如此巨大的时间来重新索引服务器上的文档?或如何追踪该服务器上的缓慢原因?

1 个答案:

答案 0 :(得分:0)

只要该字段存储在_source中,我就相信每次搜索时都可以使用脚本创建自定义字段。

{
  "query" : { "query_string" : {"query" : "*:*"} },
  "sort" : {
    "_script" : { 
        "script" : "<some sorting field>",
        "type" : "number",
        "params" : {},
        "order" : "asc"
    }
  }
}

每次搜索时,这都有重新评估服务器端排序脚本的缺点,但我解决了这个问题(1)。

相关问题