프로그래밍/ElasticSearch 2015. 6. 13. 10:28

루씬을 사용하는 ES는 루씬 스코어링 과정을 따른다. 따로 analyzer를 구현해서 사용하는 터라 특정 필드에 매칭되서 얼마의 scoring이 되는가를 확인하기 위해서 explain 을 사용할 수 있다. RDB의 explain과 비슷하게 scoring 절차, 결과를 볼 수 있다.


query 을 활용 한 curl 쿼리

curl -XGET 'localhost:9200/twitter/tweet/1/_explain' -d '{ "query" : { "term" : { "message" : "search" } } }'


query_string을 활용 한 curl 쿼리

curl -XGET 'localhost:9200/twitter/tweet/1/_explain?q=message:search'
"query_string": { "query": "content:this AND available:yes" }

이런식도 가능
"query_string": { "query": "content:this OR that" }


Json query

{ "explain": true, "query" : { "term" : { "user" : "kimchy" } }


결과 json

{ "matches" : true, "explanation" : { "value" : 0.15342641, "description" : "fieldWeight(message:search in 0), product of:", "details" : [ { "value" : 1.0, "description" : "tf(termFreq(message:search)=1)" }, { "value" : 0.30685282, "description" : "idf(docFreq=1, maxDocs=1)" }, { "value" : 0.5, "description" : "fieldNorm(field=message, doc=0)" } ] } }

//