2016-04-22 47 views
0

我在弹性搜索中有两个字段(ID和Name)。如何编写脚本在elasticsearch中分别排序两个桶

我必须搜索和排序由下面的条件的数据的要求:

铲斗1:包含具有名称值空(排序以升序ID字段)
铲斗2中的所有记录:包含具有名称中的所有记录值呈现(按名称字段按升序排序)

然后在一个响应中返回存储区1的所有记录,然后返回存储区2。

回答

0

听起来好像你可以用不同的方式说明这一点:获取所有文档,然后按名称排序(先空!),然后按ID排序。

这样说,解决方案非常容易失败。无论如何,空字段应该排序时排序升序,所以:

{ 
    "query" : { 
     "match_all": {} 
    }, 
    "sort" : [ 
     { "Name" : "asc" }, 
     { "ID" : "asc" } 
    ] 
} 
+0

但在这种情况下,桶2将按ID也排序,我不想。我希望Bucket 1只会按ID字段排序,而Bucket 2只会按名称字段排序。在结果Bucket 1之后是Bucket 2. – Shailendra

+0

@Shailendra - 只有当Name相等时,Bucket 2才会按ID排序。既然你没有指定名称相等时应如何排序,我认为这是可以接受的。 – femtoRgon