티스토리 뷰
보통 es 에서 query 사용해야 할 때 아래와 같은 식으로 쉘을 짜서 돌리곤 한다.
1 #!/bin/sh
2
3 echo "curl -XPOST sgmm:9200/others_201307/_search?pretty=true -d ' {
4 \"fields\" : [ \"*\" ],
5 \"query\": {
6 \"query_string\" : {
7 \"query\" : \"USERID:aa..bb.cc AND CTIME:[20130723000000 TO 20130723235959] \"
8 }
9 },
10 \"size\" : 100,
11 \"sort\" : { \"MSGID\" : \"asc\" }}'" > tmp.sh
12
13
14
15 sh tmp.sh > result.log
16
그러나 USERID 필드를 이용해 쿼리를 날리려고 하니 문제가 발생했다.
USERID 가 analyzed 되어 있어 위의 필드 값으로 검색하려니 정상적으로 검색되지 않는 것
. (dot) 기호를 정상인식 못하고 aa bb cc 를 토큰화 시켜 검색하는 것 같다.
급한대로 동일 필드에서 analyzed 되어 있지 않은 SSNO 필드를 사용하여 원하는 결과를 뽑아내긴 했다.
하지만 ES 에서 DOT 을 사용해서 검색할 수 있는 쿼리 구조를 고민해봐야 겠다.
[ 해결책 ]
위 스크립트는 불필요한 \ 를 잔뜩 삽입해놓고 결국엔 tmp.sh 을 실행한다.
어중간한 문법은 정리하고 .(dot) 은 쌍따옴표로 감싸주자.
이때 쌍따옴표는 \ 로 구분해줘야 한다.
1 #!/bin/bash
2
3 curl -XPOST sgmm:9200/others_201307/_search?pretty=true -d ' {
4 "fields" : [ "*" ],
5 "query": {
6 "query_string" : {
7 "query" : "USERID:\"aa.bb.cc\" AND CTIME:[20130723000000 TO 20130723235959] "
8 }
9 },
10 "size" : 100,
11 "sort" : { "MSGID" : "asc" }}'
'개발 노트 > Elastic Search' 카테고리의 다른 글
elastic search 장애처리(상세) (0) | 2013.11.05 |
---|---|
Elastic Search 장애처리 (0) | 2013.10.28 |
Elastic Search Cluster 에서 노드교체 하기 (0) | 2013.07.03 |
- Total
- Today
- Yesterday
- tr
- grep
- 풀이
- Encode
- tar
- ssh
- Bandit
- OpenSSL
- Strings
- Natas
- bz2
- 웹보안
- natas7
- 리눅스
- find
- X32
- SSL
- gz
- HTTPS
- 웹보안공부
- over the wire
- 압축파일
- java
- solution
- 32bit
- OverTheWire
- BASE64
- nc
- 리터럴
- Linux
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |