Skip to content

Latest commit

 

History

History
62 lines (48 loc) · 2.82 KB

README.md

File metadata and controls

62 lines (48 loc) · 2.82 KB

sql2es

Python based REST service which converts SQL queries into ES format. The QueryService.py is a tornado Web service which converts SQL like queries into a corresponding ElasticSearch Format. It returns a dictionary of status and result.

##Dependent libs to be installed to set it up on a server

These steps are for deploying it with Python 2.7. The compatible version of pyparsing lib (the parser for SQL like queries) need pyparsing-1.5.5. The steps:

easy_install http://cheeseshop.python.org/packages/source/p/pyparsing/pyparsing-1.5.5.tar.gz
easy_install rawes
easy_install cmd2
easy_install pip
pip install simplejson
pip install tornado

##Sample Run

/usr/bin/python2.7 QueryService.py -port=9288

curl 127.0.0.1:9288 -d '{"query" : "SELECT * FROM dchung_crawler_demo WHERE content.growthAccelerationCashCost=10 OR content.levelUnlock BETWEEN 0 AND 20"}'
{
"status": "OK", 
"result": "{'query': {'query_string': {'query': 'content.growthAccelerationCashCost:10 OR content.levelUnlock:[0 TO 20]', 'default_operator': 'AND'}}}"
}

curl 127.0.0.1:9288 -d '{"query" : "SELECT * FROM dchung_crawler_demo WHERE content.growthAccelerationCashCost=10 AND content.levelUnlock BETWEEN 0 AND 20"}'
{
"status": "OK", 
"result": "{'query': {'query_string': {'query': 'content.growthAccelerationCashCost:10 AND content.levelUnlock:[0 TO 20]', 'default_operator': 'AND'}}}"
}

curl 127.0.0.1:9288 -d '{"query" : "SELECT * FROM dchung_crawler_demo WHERE content.growthAccelerationCashCost=10 AND content.llUnlock > 0"}'
{
"status": "OK", 
"result": "{'query': {'query_string': {'query': 'content.growthAccelerationCashCost:10 AND content.levelUnlock:{0 TO *}', 'default_operator': 'AND'}}}"
}

curl 127.0.0.1:9288 -d '{"query" : "SELECT * FROM dchung_crawler_demo WHERE NOT content.itemCap=5 AND content.growthAccelerationshCost=3 AND content.levelUnlock BETWEEN 0 AND 200"}'
{
"status": "OK", 
"result": "{'query': {'query_string': {'query': 'NOT content.itemCap:5 AND content.growthAccelerationCashCost:3 AND content.levelUnlock:[0 TO 200]', 'default_operator': 'AND'}}}"
}

//Invalid SQL Syntax - an orphan 'AND' at the end of query
curl 127.0.0.1:9288 -d '{"query" : "SELECT * FROM dchung_crawler_demo WHERE NOT content.itemCap=5 AND content.growthAccelerationCashCost=3 AND content.levelUnlock BETWEEN 0 AND 200 AND"}'
{
"status": "FAILED", 
"reason": "Invalid Syntax (at char 148), (line:1, col:149)"}

//Invalid JSON passed - Missing '"' after 200
curl 127.0.0.1:9288 -d '{"query" : "SELECT * FROM dchung_crawler_demo WHERE NOT content.itemCap=5 AND content.growthAccelerationCashCost=3 AND content.levelUnlock BETWEEN 0 AND 200}'
{
"status": "FAILED", 
"reason": "Decoding input JSON has failed"
}

//Will be adding more