Kibana开发工具操作es

(1)字符串类型:
·text :用于全文检索,将当前field进行分词;
·keyword :当前field不会被分词;
(2)数值类型:
·long:  8个字节,范围(-2的63次方到2的63次方-1)
·integer:  4个字节,范围(-2的31次方到2的31次方-1)
·short:  2个字节,范围(-2的15次方到2的15次方-1)
·byte:  1个字节,范围(-2的7次方到2的7次方-1)
·double:  8个字节,范围(e+308表示是乘以10的308次方,e-324表示乘以10的负324次方)
·float :  4个字节,(e+38表示是乘以10的38次方,e-45表示乘以10的负45次方)
·half_float :精度比float小一半。
·scaled_float :根据一个long和scaled来表达一个浮点型,long-345,scaled-100 -> 3.45
(3)时间类型:
·date类型  还需要指定格式
(4)布尔类型:
·boolean类型,表达true和false
(5)二进制类型:
·binary类型暂时支持Base64 encode string
(6)范围类型:
·long_range:赋值时,无需指定具体的内容,只需要存储一个范围即可,指定gt,lt,gte,lte
·integer_range:同上
·double_range:同上
·float_range:同上
·date_range:同上
·ip_range:同上
(7)经纬度类型:
(8)Ip类型:

创建索引(test_user(表名))

PUT test_user
{
  "settings": {
    "index": {
      "number_of_shards": "3",
      "number_of_replicas": "0"
    }
  }
}

定义mappering(相当数据库字段)

PUT test_user/_mapping
{
    "properties": {
      "id": {
        "type": "long"
      },
    
      "name": {
        "type": "keyword"
      },
      "age": {
        "type": "integer"
      }
    } 
}

查看索引设置(表设置)

GET test_user/_settings

查看所有索引

GET _settings

创建索引同时创建字段

PUT dade04
{
  "mappings":{
    "properties":{
      "name":{
        "type":"text"
      }
    }
  }
}

添加文档和索引(新建一个索引并添加数据)

第一种写法(索引test_user(表名))
PUT /test_user/_bulk?refresh
{"index":{"_id": "1"}}
{"id": "1", "name": "dade", "age": "18"}
{"index":{"_id": "2"}}
{"id": "2", "name": "dade1", "age": "18"}
{"index":{"_id": "3"}}
{"id": "3", "name": "dade2", "age": "18"}

第二种写法,dade是索引(表名)
PUT /dade/_bulk
{"index":{"_id": "8"}}
{"id": "922", "name": "2312312", "age": "18"}

post请求方式
POST  /dade/_bulk
{"index":{"_id":"2356"}}
{"id": "92272222","name": "2312312sw","age": "18"}

添加文档和更新文档

根据索引index的_id,存在就是更新,不存在添加

PUT /dade/_bulk
{"index":{"_id":"236"}}
{"id": "9227","name": "2312312sw","age": "18"}

或

POST /dade/_bulk
{"index":{"_id":"236"}}
{"id": "9227","name": "2312312sw","age": "18"}

删除文档

2356是index的索引id

#根据2356删除
DELETE /dade/_doc/2356
#删除表
DELETE dade

es使用sql

查询所有表

POST /_sql?format=txt
{
  "query": "SHOW TABLES"
}

查询sql(和数据库操作一致,其它查询)

POST /_sql?format=txt
{
  "query": "SELECT * FROM test_user"
}

POST /_sql?format=json
{
  "query": "SELECT * FROM test_user"
}

POST /_sql?format=txt
{
  "query": "SELECT * FROM dade where  name like '%大得%'"
}

ik分词器查询

没安装ik之前分词(是一个一个字的)

GET _analyze
{
  "analyzer":"standard",
  "text":"今天大得来啦"
}

安装之后(词组等等都可以)

粗粒度分词

GET _analyze
{
  "analyzer":"ik_smart",
  "text":"今天大得来啦"
}

细粒度分词

GET _analyze
{
  "analyzer":"ik_max_word",
  "text":"今天大得来啦"
}

查询文档

词条查询:term

词条查询不会分析查询条件,只有当词条和查询字符串完全匹配时才匹配搜索

全文查询:match

全文查询会分析查询条件,先将查询条件进行分词,然后查询,求集合

使用ik分词器上面的索引要重新创建,或者更改,因为没使用ik分词器创建的,默认使用默认分词一个一个字的

创建索引,添加映射,指定使用ik分词器,analyzer指定分词器

PUT dade
{
  "mappings": {
    "properties": {
      "id":{
        "type":"keyword"
      },
      "name":{
        "type": "text",
        "analyzer":"ik_max_word"
      }
    }
  }
}

添加数据
PUT dade/_doc/3
{
  "id":1,
  "name":"大得"
}

term查询(匹配大得词查询)

GET dade/_search
{
  "query": {
    "term": {
      "name": {
        "value": "大得"
      }
    }
  }
}

match查询(对大得大分词查询)

GET dade/_search
{
  "query": {
    "match": {
      "name": "大得大"
    }
  }
}

高级操作

批量操作

Bulk批量操作是将文档的增删改查一系列操作,通过一次请求全部做完,减少网络传输次数

#delete删除表dade,id是1的数据
#create创建,id是1,内容放下面
#update更新id是3的,内容下面
POST _bulk
{"delete":{"_index":"dade","_id":2}}
{"create":{"_index":"dade","_id":1}}
{"id":6,"name":"大得369"}
{"update":{"_index":"dade","_id":3}}
{"doc":{"id":6,"name":"大得36922"}}

导入数据

将数据库表数据导入到es

创建索引(表),然后查询数据库,使用上面的批量查询写入

查询

match_all查询(所有)和分页

#from是从第0页开始,size一页20条
GET dade/_search
{
  "query": {
    "match_all": {}
  },
  "from": 0,
  "size": 20
}

#value总条数,命中
"total" : {
      "value" : 3,
      "relation" : "eq"
    },

term查询

GET dade/_search
{
  "query": {
    "term": {
      "name": {
        "value": "大得"
      }
    }
  }
}

GET cdj_order_detail/_search
{
  "query": {
    "term": {
      "h_name_date.keyword":"佛山风度国际名苑项目->区域1->商铺->北区->546"
    }
  },
  "track_total_hits":true,
  "from":0,
  "size":12
}

match查询

GET dade/_search
{
  "query": {
    "match": {
      "name": "大得大"
    }
  }
}

#operator表示对分词进行and条件,等于大得并且等于手机
GET dade/_search
{
  "query": {
    "match": {
      "name": {
        "query": "大得手机",
        "operator": "and"
      }
    }
  }
}

模糊查询

wildcard查询:会对查询条件进行分词,还可以通配符?(?表示任意单个字符)和*(*表示0个或多个字符)

regexp查询:正则查询

prefix查询:前缀查询

wildcard查询

#以大开头的,大*,模糊*得*
GET dade/_search
{
  "query": {
    "wildcard": {
      "name": {
        "value": "大*"
      }
    }
  }
}

regexp查询

GET dade/_search
{
  "query": {
    "regexp": {
      "name": "\\大+(.)*"
    }
  }
}

prefix查询

GET dade/_search
{
  "query": {
    "prefix": {
      "name": {
        "value": "大"
      }
    }
  }
}

范围查询

range范围查询,查询指定字段在指定范围内包含值

#可用到价格,这里范围1-2
GET dade/_search
{
  "query": {
    "range": {
      "id": {
        "gte": 1,
        "lte": 2
      }
    }
  }
}

queryString查询(多字段同时查询操作)

queryString

会对查询条件进行分词,

然后将分词后的查询条件和词条进行查询匹配

默认取集合(or)

可以指定多个字段进行查询

#在id和name找
GET dade/_search
{
  "query": {
    "query_string": {
      "fields": ["id","name"], 
      "query": "大得"
    }
  }
}
#and,or查询
GET dade/_search
{
  "query": {
    "query_string": {
      "fields": ["id","name"], 
      "query": "大得 or 3 and 9"
    }
  }
}

#大得和or和3是三个词
GET dade/_search
{
  "query": {
    "simple_query_string": {
      "fields": ["id","name"], 
      "query": "大得 or 3"
    }
  }
}

布尔查询(多条件查询)

bool:对多个查询条件连接,连接方式

must(and):条件必须成立and

must_not(not):条件必须不成立not

should(or):条件可以成立or

filter:条件必须成立,性能比must高,不会计算得分,and

可同时拼接5个使用

must查询(等于大得并且等于订单)

GET dade/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "name": {
              "value": "大得"
            }
          }
        },
        {
          "match": {
            "name": "订单"
          }
        }
      ]
    }
  }
}

或
GET dade/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "name": {
              "value": "大得"
            }
          }
        }
      ],
      "filter": [
        {
          "term": {
            "name": "订单"
          }
        }
      ]
    }
  }
}
#多个
GET dade/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "name": {
              "value": "大得"
            }
          }
        }
      ],
      "filter": [
        {
          "term": {
            "name": "大得"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "name": "来了"
          }
        }
      ]
    }
  }
}

聚合查询(求和等,分组)

指标聚合:相当mysql的max,min,avg,sum等等

桶聚合:相当mysql的group by操作,不要对text类型的数据进行分组,会失败

指标聚合

GET dade/_search
{
  "query": {
    "match": {
      "name": "大得"
    }
  },
  "aggs": {
    "money_max": {
      "sum": {
        "field": "price"
      }
    }
  }
}

桶聚合(分组查询)

GET dade/_search
{
  "query": {
    "match": {
      "name": "大得"
    }
  },
  "aggs": {
    "grout_id": {
      "terms": {
        "field": "id",
        "size": 100
      }
    }
  }
}

高亮查询

GET dade/_search
{
  "query": {
    "match": {
      "name": "大得"
    }
  },
  "highlight": {
    "fields": {
      "name":{
        "pre_tags": "<text style=''>",
        "post_tags": "</text>"
      }
    }
  }
}

索引别名和重建索引

重建索引

新建一个新的索引dade_v1

PUT dade_v1
{
  "mappings": {
    "properties": {
      "id":{
        "type": "long"
      },
      "name":{
        "type": "text"
      },
      "money":{
        "type": "float"
      }
    }
  }
}

dade拷贝数据到v1,source原,dest新,重建索引完成

POST _reindex
{
  "source": {
    "index": "dade"
  },
  "dest": {
    "index": "dade_v1"
  }
}
------------------------------------------------------------
数据太大超时千万级,使用wait_for_completion内部运行,直接返回task,执行任务,size每次多少条
POST _reindex?wait_for_completion=false
{
  "source": {
    "index": "cdj_order",
    "size":10000
  },
  "dest": {
    "index": "cdj_order248"
  }
}

查看task执行
指定taskid查询
GET _tasks/a2bFyLYGRVmjBNtGuDjmWg:24995109
全部
GET _tasks?detailed=true&actions=*
取消任务
POST _tasks/a2bFyLYGRVmjBNtGuDjmWg:24995109/_cancel

索引别名(重建索引,之前的删除,起别名之前的名字)dade_v1别名dade,这时候两个名字都可以查

POST dade_v1/_alias/dade

es默认查询只查10000条

解除限制

"track_total_hits": true,

GET dade/_search
{
  "query": {
    "match_all": {}
  }, 
  "track_total_hits": true, 
  "aggs": {
    "money_max": {
      "sum": {
        "field": "money"
      }
    }
  }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大得369

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值