_____ _ _ ____ _____ ___ ____ ____ ___ _
| ____| | / / ___|_ _|_ _|/ ___|/ ___| / _ | |
| _| | | / _ ___ | | | || | ___ | | | || |
| |___| |___ / ___ ___) || | | || |___ ___) | |_| || |___
|_____|_____|/_/ _|____/ |_| |___|____||____/ ___|_____|
Alat ini mengubah sql menjadi elasticsearch dsl
Saat ini dukungan:
dapatkan -u github.com/cch123/elasticsql
Demo :
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 )
}
akan menghasilkan:
{
"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
Jika sql Anda berisi beberapa kata kunci, misalnya. order, timestamp, jangan lupa untuk keluar dari kolom ini sebagai berikut:
select * from `order` where `timestamp` = 1 and `desc`.id > 0
Untuk menggunakan alat ini, Anda perlu memahami istilah kueri dan mencocokkan kueri frasa dari elasticsearch.
Menetapkan suatu bidang untuk dianalisis atau tidak dianalisis akan mendapatkan hasil yang berbeda.
Untuk rincian lebih lanjut tentang konversi, silakan merujuk ke wiki
Saat menulis alat ini, saya mencoba menghindari filter dan agregasi dsl yang tidak digunakan lagi, sehingga kompatibel dengan sebagian besar versi elasticsearch
Jika Anda memiliki saran atau ide, silakan kirimkan masalah atau Tarik Permintaan!
MIT