elasticsql
1.0.1
_____ _ _ ____ _____ ___ ____ ____ ___ _
| ____| | / / ___|_ _|_ _|/ ___|/ ___| / _ | |
| _| | | / _ ___ | | | || | ___ | | | || |
| |___| |___ / ___ ___) || | | || |___ ___) | |_| || |___
|_____|_____|/_/ _|____/ |_| |___|____||____/ ___|_____|
تقوم هذه الأداة بتحويل SQL إلى Elasticsearch DSL
الدعم حاليا:
اذهب واحصل على -u github.com/cch123/elasticsql
العرض التوضيحي :
package main
import (
"fmt"
"github.com/cch123/elasticsql"
)
var sql = `
select * from aaa
where a=1 and x = '三个男人'
and create_time between '2015-01-01T00:00:00+0800' and '2016-01-01T00:00:00+0800'
and process_id > 1 order by id desc limit 100,10
`
func main () {
dsl , esType , _ := elasticsql . Convert ( sql )
fmt . Println ( dsl )
fmt . Println ( esType )
}
سوف تنتج :
{
"query" : {
"bool" : {
"must" : [
{
"match" : {
"a" : {
"query" : " 1 " ,
"type" : " phrase "
}
}
},
{
"match" : {
"x" : {
"query" : "三个男人" ,
"type" : " phrase "
}
}
},
{
"range" : {
"create_time" : {
"from" : " 2015-01-01T00:00:00+0800 " ,
"to" : " 2016-01-01T00:00:00+0800 "
}
}
},
{
"range" : {
"process_id" : {
"gt" : " 1 "
}
}
}
]
}
},
"from" : 100 ,
"size" : 10 ,
"sort" : [
{
"id" : " desc "
}
]
}
aaa
إذا كان SQL الخاص بك يحتوي على بعض الكلمات الرئيسية، على سبيل المثال. النظام، الطابع الزمني، لا تنسى الهروب من هذه الحقول كما يلي:
select * from `order` where `timestamp` = 1 and `desc`.id > 0
لاستخدام هذه الأداة، تحتاج إلى فهم مصطلح الاستعلام واستعلام مطابقة العبارة في Elasticsearch.
سيؤدي تعيين حقل لتحليله أو عدم تحليله إلى الحصول على نتائج مختلفة.
لمزيد من التفاصيل حول التحويل، يرجى الرجوع إلى الويكي
عند كتابة هذه الأداة، حاولت تجنب مرشحات وتجميعات DSL المهملة، لذا فهي متوافقة مع معظم إصدارات Elasticsearch
إذا كانت لديك أي نصائح أو أفكار، فنحن نرحب بك لتقديم مشكلة أو طلب سحب!
معهد ماساتشوستس للتكنولوجيا