티스토리 뷰

개발 노트/Elastic Search

ElasticSearch Query 사용하기

오리지날초이 2013. 9. 4. 16:26

보통 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" }}'



728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
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
글 보관함