我有一个包含多个不同属性的文档。在我的应用程序中,我想对其中一个doc属性进行过滤,并按任何其他属性进行排序。
即
{
“accountId”:“qa32176148”,
“id”:“122230310111”,
“rtSessionId”:“qa321761484294973207”,
“sessionStartTime”:1387705538426,
“visitorLastUpdateTime”:1387705717094,
“countryCode”:“US”,
“州”:“纽约”,
“城市”:“纽约”,
“国家”:“美国”,
“组织”:“谷歌”,
“ipAddress”:“216.239.39.99”,
“agentNickName”:“john”
}
答案 0 :(得分:1)
基本上,是的,您需要为每个属性创建单独的视图(如果您希望仅使用一个属性进行过滤)。如果您还需要能够在一个查询中按两个或多个属性过滤结果,则每个属性组合还需要一个视图。但是我不明白你的意思是什么composite index
(如果你看到一些例子,可能会因为你的表现而变得更好)。据我了解复合索引,它根本不适应这种情况。
是的,在大多数情况下。但是,只有在您希望与属性X
完全匹配时才能这样做,即X == 1
(不是范围:X == 1 ... 6
)。要按Y
属性排序,只需在X
属性后将其附加到您的emit函数:
emit([X,Y], null)
并使用startKey
和endKey
参数。即startKey=[1]
,endkey=[1,{}]
。
现在我回到你的第一个问题。我认为这种情况用于某种搜索操作。因此elasticsearch有一个很好的沙发基础扩展(另请参见此page),这将使您在过滤和排序方面更具灵活性,而无需创建多个视图。