(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条
解除限制文章来源:https://www.toymoban.com/news/detail-758241.html
"track_total_hits": true, 文章来源地址https://www.toymoban.com/news/detail-758241.html
GET dade/_search
{
"query": {
"match_all": {}
},
"track_total_hits": true,
"aggs": {
"money_max": {
"sum": {
"field": "money"
}
}
}
}
到了这里,关于Kibana开发工具操作es的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!