2017-10-12 46 views
3

우리 프로젝트 중 하나에 대해 항공기 비행을 고려 중입니다. 그래서 저는 현재 3 노드 클러스터를 만들고 그것에 일부 데이터를로드했습니다.Aerospike의 2 차 지표로부터의 문의

샘플 데이터

NS : IMEI

세트 : imei_data

+-------------------+-----------------------+-----------------------+----------------------------+--------------+--------------+ 
| imsi    | fcheck    | lcheck    | msc      | fcheck_epoch | lcheck_epoch | 
+-------------------+-----------------------+-----------------------+----------------------------+--------------+--------------+ 
| "413010324064956" | "2017-03-01 14:30:26" | "2017-03-01 14:35:30" | "13d20b080011044917004100" | 1488358826 | 1488359130 | 
| "413012628090023" | "2016-09-21 10:06:49" | "2017-09-16 13:54:40" | "13dc0b080011044917006100" | 1474432609 | 1505550280 | 
| "413010130130320" | "2016-12-29 22:05:07" | "2017-10-09 16:17:10" | "13d20b080011044917003100" | 1483029307 | 1507546030 | 
| "413011330114274" | "2016-09-06 01:48:06" | "2017-10-09 11:53:41" | "13d20b080011044917003100" | 1473106686 | 1507530221 | 
| "413012629781993" | "2017-08-16 16:03:01" | "2017-09-13 18:10:48" | "13dc0b080011044917004100" | 1502879581 | 1505306448 | 

그럼 내가 날짜를 기준으로 조회 할부터 AQL을 사용 lcheck_epoch에 보조 인덱스를 만들었습니다.

+--------+----------------+-----------+-------------+-------+--------------+----------------+-----------+ 
| ns  | bin   | indextype | set   | state | indexname | path   | type  | 
+--------+----------------+-----------+-------------+-------+--------------+----------------+-----------+ 
| "imei" | "lcheck_epoch" | "NONE" | "imei_data" | "RW" | "idx_lcheck" | "lcheck_epoch" | "NUMERIC" | 
+--------+----------------+-----------+-------------+-------+--------------+----------------+-----------+ 

create index idx_lcheck on imei.imei_data (lcheck_epoch) NUMERIC

은 내가

Error: (204) AEROSPIKE_ERR_INDEX

가 설명해주십시오지고있어

select imsi from imei.imei_data where idx_lcheck=1476165806

을 실행합니다.

답변

4

쿼리에서 bin 이름이 아닌 인덱스 이름을 사용하고 있습니다. 이 시도 :

SELECT imsi FROM imei.imei_data WHERE lcheck_epoch=1476165806 

또는

SELECT imsi FROM imei.imei_data WHERE lcheck_epoch BETWEEN 1490000000 AND 1510000000 

그냥 참고

, 당신은 언어 클라이언트 (자바, C, C 번호, 이동)의 몇 가지를 통해 predicate filtering를 사용하여 훨씬 더 복잡한 쿼리를 할 수 있습니다. 예를 들어 PredExp Java 클라이언트 클래스 ( examples 참조)

+1

정말 고마워요. 처음에 내가 SELECT를 실행했을 때 imsi FROM imei.imei_data where lcheck_epoch = '1476165806'; 그것은 나에게 오류를 주었다 : (201) AEROSPIKE_ERR_INDEX_NOT_FOUND. 나는 따옴표를 사용했기 때문에 있어야한다. – ivcode

+1

그냥 두 가지 측면 질문. 1) aerospike는 mysql과 동등한 기능을 가지고 있습니다 : imei의 '/ tmp/file'파일에서 field1, field2를 선택하십시오. 여기서 lcheck_epoch> 1476165806 일일 업데이트 된 레코드의 CSV 덤프를 다른 시스템으로 보내야합니다. 그리고 위의 질문에 lcheck_epoch> 1476165806 유효한 필터가 무엇입니까? – ivcode

+2

예, 따옴표를 사용하면 문자열로 바뀌며 STRING 데이터의 해당 저장소에 보조 색인이 없기 때문에 숫자는 NUMERIC입니다. 자동 형변환은 없습니다. –