2013-12-20 80 views
1

我有一個包含幾個不同屬性的文檔。在我的應用程序中,我想對其中一個文檔屬性進行過濾,並通過任何其他屬性進行排序。對Couchbase中的多個屬性進行排序和篩選

{
「帳戶ID」: 「qa32176148」,
「ID」: 「122230310111」,
「rtSessionId」: 「qa321761484294973207」,
「sessionStartTime」:1387705538426,
「visitorLastUpdateTime」:1387705717094,
「COUNTRYCODE」: 「US」,
「狀態」: 「NY」,
「城市」: 「紐約」,
「國」: 「美國」,
「組織」: 「谷歌」,
「ip地址」: 「216.239.39.99」,
「agentNickName」:「約翰「
}

  1. 我想在這些領域中的每一個過濾器,我應該創造領域中的每一個觀點?
  2. (作爲一個例子)我可以在狀態和按城市排序嗎?
+1

您可以添加文檔的示例和預期的視圖輸出嗎? – SuperSaiyan

+0

只是做了,看看編輯我已經做了 –

回答

1
  1. Basucally,是的,你需要爲每個屬性創建單獨的視圖(在情況下,如果你想只有一個屬性過濾器)。如果您還需要在一個查詢中過濾兩個或更多個屬性的結果,則還需要每個屬性組合都有一個視圖。但我不明白你的意思是什麼composite index(可能是如果你看到一些例子,如果你顯示它會是很大的)。據我瞭解複合指數,它不會適應這種情況。

  2. 是的,在大多數情況下。但是,只有在您期望完全匹配屬性X,即X == 1(非範圍:X == 1 ... 6)時,您纔可以這樣做。要按Y屬性排序,只需在X屬性 emit([X,Y], null)startKeyendKey params後面附加它即可。即startKey=[1]endkey=[1,{}]

現在我回到你的第一個問題。我認爲這種情況被用於某種搜索操作。因此,elasticsearch(也參見此page)具有良好的couchbase擴展,這將允許您在過濾和排序方面具有更多的靈活性,而無需創建許多視圖。

+0

正確的,但我有處理文件在couchbase和彈性搜索之間的另一個延遲。我需要這個用於實時分析系統,這意味着文檔需要在couchbase中更新,然後進行彈性搜索 –

+0

Elasticsearch的增量索引可以調整爲1秒刷新間隔。這不夠嗎? – m03geek

相關問題