2012-10-18 3 views
1

맵 축소 쿼리에서 초 인덱스와 키 필터를 함께 사용할 수 있습니다. 이RIAK 맵핑에서 보조 인덱스와 키 필터를 함께 사용

*{"inputs":{ "bucket"  :"ignore_bucket1", 
    "index"  :"secindex_bin", 
    "key"  :"secIndexVal", 
    "key_filters":[["and", 
        [["tokenize", "-", 5], ["greater_than_eq", "20120101"]], 
        [["tokenize", "-", 5], ["less_than_eq", "20120112"]] 
    ]] 
}} 

같은 뭔가 또한 그것은 초 인덱스를 사용하는 키의 목록을 보려면 다음 반환 키에 keyfilter 실행하는 효율적인가요?

답변

1

필자가 알고있는 한, 키를 검색하는 매우 다른 방법을 나타내는 입력 된 명령문에서 이들을 결합 할 수 없다는 것을 알고 있습니다. 2 차 인덱스를 사용하여 초기 세트를 검색하고 모든 키 스캔을 피한 다음 키 필터링 로직을 맵 위상 함수로 구현하여 제안한대로 구현할 수 있습니다.

아마도 다른 방법을 사용하면 더 빨리 화합물 이진 보조 색인을 만들 수 있습니다. [secIndexVal] _ [날짜]. 이것이 올바르게 정렬되도록 보장되면, 이것에 대해 하나의 2 차 인덱스 범위 쿼리를 실행하고 위에서 지정한 값을 얻을 수 있습니다. 당신이 HTTP API를 통해이 작업을 수행 할 수 없습니다 AFAIK

+0

감사합니다. 날짜를 초 인덱스에 추가합니다. –

0

,

기독교는 범위 쿼리를 사용할 수 있지만 이미 참조 할 수있는 기본 키 인덱스를 가지고 당신이 다른 인덱스가 필요하지 않습니다 언급 한 바와 같이 인덱스 필드로 $key :

[email protected] ~ (master *%) » curl http://nyx:8098/riak/test/20120931 -d "31. Sep 2012" 
[email protected] ~ (master *%) » curl http://nyx:8098/riak/test/20121002 -d "02. Oct 2012" 
[email protected] ~ (master *%) » curl http://nyx:8098/riak/test/20121021 -d "21. Oct 2012 
[email protected] ~ (master *%) » curl http://nyx:8098/riak/test/20121102 -d "The future"  
[email protected] ~ (master *%) » curl -X POST -H "content-type: application/json" \ 
-d @- http://localhost:8098/mapred \ 
<<EOF 
{ "inputs":{ 
     "bucket":"test" 
    , "index":"\$key" 
    , "start":"20121001" 
    , "end":"20121101" 
} 
, "query":[{ 
     "reduce":{ 
      "language":"erlang" 
     , "module":"riak_kv_mapreduce" 
     , "function":"reduce_identity" 
     , "keep":true 
     } 
    }] 
} 
EOF 
# ... 
[["test","20121021"],["test","20121002"]] 

당신이 정말로 얼랑 PB 클라이언트를 사용하여 이러한 선 (당신은 당신의 코드 경로에 riak_kv 필요)을 따라 뭔가 할 수있는 당신과 함께 키 필터를 원하는 경우 :

을 0
관련 문제