一、MySQL数据同步至Elasticsearch实例
MySQL数据类型 | Elasticsearch数据类型 | 说明 |
---|---|---|
tinyint | short | |
unsigned tinyint | integer | |
mediumint | integer | -/- |
smallint | short | |
unsigned smallint | integer | |
int | integer | |
unsigned int | long | |
bigint | long | -/- |
Bool | ||
Boolean | boolean | -/- |
decimal | double | 如果decimal后面带小数点,Elasticsearch 6.7.1以下用text类型,6.7.1以上用BigDecimal |
double | double | -/- |
float | float | -/- |
char | text | -/- |
varchar | text | -/- |
longtext | text | -/- |
mediumtext | text | -/- |
tinytext | text | -/- |
blob | binary | -/- |
binary | binary | -/- |
bit | long | bit(1)–>boolean |
Date | date | Elaticsearch默认格式:yyyy-MM-dd。 |
datetime | date | Elaticsearch默认格式:yyyy-MM-dd’T’HH:mm:ss,如含微秒精度date_format为 yyyy-MM-dd’T’HH:mm:ss.S。 |
timestamp | date | Elaticsearch默认格式:yyyy-MM-dd’T’HH:mm:ss,如含微秒精度date_format为 yyyy-MM-dd’T’HH:mm:ss.S 。 |
time | date | Elaticsearch默认格式:HH:mm:ss,如含微秒精度date_format为 HH:mm:ss.S。 |
year | date | Elaticsearch默认格式:yyyy |
二、Query语法
1、range
{
"query": {
"range": {
"age": {
"gte": "32",
"lte": "50"
}
}
}
}
2、term
{
"query": {
"term": {
"userName": "user10"
}
}
}
3、parent query
query条件中为父对象的字段
{
"query": {
"has_parent" : {
"parent_type" : "user",
"score" : true,
"query" : {
"match" : {
"userName": "user10"
}
}
}
}
}
4、parent id query
{
"query": {
"parent_id": {
"type": "my_child",
"id": "1"
}
}
}
5、has child query
{
"query": {
"has_child" : {
"type" : "event",
"score_mode" : "min",
"query" : {
"term" : {
"appVersion": "2.4.20"
}
}
}
}
}
聚合
{
"query": {
"has_child": {
"query": {
"match": {
"os": "2"
}
},
"type": "event"
}
}
,
"aggs": {
"group_by_age": {
"terms": {
"field": "age"
}
}
}
}
父子对象复合查询
{
"query": {
"bool": {
"should": [{
"match": {
"userName": "user10"
}
},
{
"has_child": {
"type": "event",
"score_mode": "min",
"query": {
"term": {
"appVersion": "2.4.20"
}
}
}
}
]
}
}
}