1.概述
es在查询时,可以指定搜索类型为
QUERY_THEN_FETCH
QUERY_AND_FEATCH
DFS_QUERY_THEN_FEATCH
DFS_QUERY_AND_FEATCH
我们以查询匹配度最高的Top10为例,讲解下他们的区别。
2.QUERY_AND_FETCH
-
客户端把请求发送给集群中的某一个节点,这个节点会把查询请求发送给所有分片去执行,
-
每个分片会把查询的数据(包含数据的分值,以及数据的详细内容)返回给某一个节点进行汇总,排序,然后把这些数据返回给客户端。
这样客户端可能会收到(10*分片数量)
的数据
这种方案,数据量和排名都有问题。
优点:效率高,查询速度快
3.QUERY_THEN_FETCH(默认)
-
客户端把请求发送给集群中的某一个节点,这个节点会把查询请求发送给所有分片去执行,
-
每个分片会把查询的数据(包含数据的分值,以及数据ID)返回给某一个节点进行汇总,排序,取前10名
-
根据前10名的id到对应的分片查询数据的详细内容,