엘라스틱서치 filter+must 조합의 텍스트쿼리 성능비교

풘풘한~ 성능테스트의 세계로~ GOGO 🎢


테스트 환경

  • 서버 갯수: 10대

  • 형태소:

    nori 형태소분석기 사용중

    스탑태그"E" , "IC" , "J" , "MAG" , "MM" , "NA" , "NR" , "SC" , "SE" ,”SF" , "SH" , "SN" , "SP" , "SSC" , "SSO" , "SY" , "UNA" , "UNKNOWN" , "VA" , "VCN" , "VCP" , "VSV" , "VV" , "VX" , "XPN" , "XR" ,"XSA" , "XSN" , "XSV"
  • 테스트하는 인덱스: 1개

  • 인덱스의 샤드: shard 3 replica 2

  • 인덱스의 문서수: 19,257,330

  • client: 1000

  • target-throughput: 1000

결과

*self.get_random_words = “가나다라마사 아자차자파타하 에이비씨디 이에프쥐 에이치아이”

쿼리throughputCPU
{"query":{"bool":{
"must":[
{"match":
{"text_field": self.get_random_words}}],
"filter":[
{"term":{"is_selling": true}},
{"term":{"is_exposed":true}},{"term":{"is_sold_out": false}},
{"term":{"is_displayed": true}}]
}
},"from": 0,"size":100,"sort":{"keyword":"asc"}}
Mean Throughput(평균 처리량) :
364.40ops/s

90th percentile latency(대기시간 포함한 처리시간):
37267.97ms

90th percentile service time(대기시간을 포함하지 않은 처리시간):
3210.70m
100%
{"query":{"bool":{
"must":[
{"simple_query_string":
{"query": self.get_random_words(),"fields":["text_field"]}}],
"filter":[
{"term":{"is_selling":true}},
{"term":{"is_exposed": true}},
{"term":{"is_sold_out":false}},
{"term":{"is_displayed":true}}]

}},"from":0,"size":10,"sort":{"keyword":"asc"}}
Mean Throughput(평균 처리량):
473.50ops/s

90th percentile latency(대기시간 포함한 처리시간):
30934.34ms

90th percentile service time(대기시간을 포함하지 않은 처리시간):
3334.04ms
100%
결론 : 위 사양일때, simple_query_string이 더 빠르다.

이거말고도 테스트 엄청 돌렸는데... 보안때문에 올릴 수가 없다.. 너무 슬프다.. 😥

좋은 웹페이지 즐겨찾기