我们使用远程方法的重新索引将2.4集群升级到6.2集群。在2.4中,我们使用catch-all _all
字段来执行搜索,所有查询的响应时间都在500 ms以下。
在6.2中,_all
字段不再适用于新索引,因此我们最终创建了一个名为all
(类似于"all": {"type": "text"}
)的新文本类型字段,并在所有其他字段上设置了copy_to
(其中大约有2000 )。但是现在,搜索这个新的所有捕获字段all
所花费的时间是2.4 _all
字段搜索时间的2到10倍。(在执行查询之前,我们刷新了两个集群上的缓存。)
这两个集群都是单个数据中心,单节点8GB内存位于同一个AWS区域,通过弹性云托管。这两个索引都有相同数量的文档(约600万份)和大约150个Lucene段文件。
有什么线索知道原因吗?
UPDATE:两个索引都返回没有所有捕获字段的文档,即它们不存储所有捕获字段。
下面是一个查询和响应示例:
$ curl --user "$user:$password" \
> -H 'Content-Type: application/json' \
> -XGET "$es/$index/$mapping/_search?pretty" -d'
> {
> "size": 1,
> "query" : {
> "match" : { "all": "sherlock" }
> }
> }
> '
{
"took" : 42,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 28133,
"max_score" : 2.290815,
"hits" : [ {
"_index" : "sherlock",
"_type" : "doc",
"_id" : "513763",
"_score" : 2.290815,
"_source" : {
"docid" : 513763,
"age" : 115,
"essay" : "Has Mr. Sherlock Holmes?",
"name" : {
"last" : "Pezzetti",
"first" : "Lilli"
},
"ssn" : 834632279
}
} ]
}
}
UPDATE 2:我忘记提到的另一点是,一个临时应用程序正在使用2.4集群,它每隔几分钟向它发送几个查询。这会不会让OS缓存等其他因素发挥作用?
发布于 2018-03-19 22:23:10
您是否存储了_all
字段并在原始设置中返回它?你现在还回来吗?如果你没有--现在你做了--那就是你看到的响应开销,而不是搜索开销。基本上,如果您不需要该字段(以及任何其他字段),您应该在响应中省略该字段(来自_source)。
查看源滤波以获得更多信息
https://stackoverflow.com/questions/49330669
复制相似问题