elasticsearch

4.20 航班飞行数据分析并生成可视化图表_哔哩哔哩_bilibili

4、ElasticSearch数据管理详解_哔哩哔哩_bilibili

多字段查询multi_match_哔哩哔哩_bilibili

POST _analyze

{

"analyzer":"standard",

"text":"我爱你中国"

}

POST _analyze

{

"analyzer":"ik_smart",

"text":"我爱你中国"

}

POST _analyze

{

"analyzer":"ik_smart_word",

"text":"我爱你中国"

}

put /test_index

{

"settings":{

"index":{

"analysis.analyzer.default.type":"ik_max_word"

}

}

}

GET _cat/nodes?v

#底层自带分词器

POST _analyze

{

"analyzer": "standard",

"text":"我爱你中国"

}

#索引创建、查询、删除

delete /es_db

put /es_db

get /es_db

#插入数据

put /es_db/_doc/1

{

"name":"张三1",

"sex":1,

"age":21,

"address":"苏州独墅湖公园",

"remark":"java developer"

}

put /es_db/_doc/2

{

"name":"张三2",

"sex":1,

"age":22,

"address":"苏州独墅湖公园",

"remark":"java developer"

}

put /es_db/_doc/3

{

"name":"张三3",

"sex":1,

"age":23,

"address":"苏州独墅湖公园",

"remark":"java developer"

}

put /es_db/_doc/4

{

"name":"张三4",

"sex":1,

"age":23,

"address":"苏州独墅湖公园",

"remark":"java developer"

}

get /es_db/_doc/1

DELETE /es_db/_doc/1

#put没有id会报错

put /es_db/_doc

{

"name":"张三",

"sex":1,

"age":24,

"address":"苏州独墅湖公园",

"remark":"java developer"

}

#post没有id会创建新的索引

post /es_db/_doc

{

"name":"张三123",

"sex":1,

"age":24,

"address":"苏州独墅湖公园",

"remark":"java developer"

}

#全量覆盖

put /es_db/_doc/1

{

"name":"张三1",

"sex":1,

"age":21,

"address":"苏州独墅湖公园",

"remark":"java developer"

}

#put全量覆盖

put /es_db/_doc/1

{

"name":"张三123",

"sex":1

}

#post全量覆盖

POST /es_db/_doc/1

{

"name":"张三123",

"sex":1

}

#post更新

POST /es_db/_update/1

{

"doc": {

"name": "张三1",

"sex": 0

}

}

get /es_db/_doc/1

#简易语法

#查询所有数据,7.X之前废弃,8.x直接移除

GET /es_db/_doc/_search

GET /es_db/_search

#等于

GET /es_db/_search?q=age:21

#大于

GET /es_db/_search?q=age:>21

#小于

GET /es_db/_search?q=age:<22

范围查询

GET /es_db/_search?q=age[21 TO 22]

#id集合查询

GET /es_db/_mget

{"ids":["1","2"]}

分页查询

GET /es_db/_search?q=age[21 TO 30]&from=0&size=1

#输出某些字段

GET /es_db/_search?_source=name,age

#排序 sor=字段: desc/asc

GET /es_db/_search?sort=age:desc

使用 keyword 子字段(精确匹配)

POST /es_db/_search

{

"query":{

"term":{

"name.keyword":"张三1"

}

}

}

GET /es_db/_mapping

(精确匹配)

POST /es_db/_search

{

"query":{

"term":{

"name":"张三"

}

}

}

#标准分词器

POST /es_db/_search

{

"query":{

"term":{

"name":"张"

}

}

}

#改用 match 查询(自动分词)

POST /es_db/_search

{

"query": {

"match": {

"name": "张三"

}

}

}

GET /es_db/_search

多字段模糊匹配查询与精确查询 multi_match

put /es_db/_doc/5

{

"name":"张三5",

"sex":1,

"age":25,

"address":"友翔路",

"addresstwo":"石湖东路",

"remark":"java developer"

}

put /es_db/_doc/6

{

"name":"张三6",

"sex":1,

"age":26,

"address":"石湖东路118号",

"addresstwo":"友翔路",

"remark":"java developer"

}

put /es_db/_doc/7

{

"name":"张三7",

"sex":1,

"age":27,

"address":"石湖西路迎春东路",

"addresstwo":"友翔路",

"remark":"java developer"

}

多字段模糊匹配查询与精确查询 multi_match

POST /es_db/_search

{

"query": {

"multi_match": {

"query": "友",

"fields": ["address","addresstwo"]

}

}

}

#DSL范围查询

POST /es_db/_search

{

"query": {

"range": {

"age": {

"gte": 21,

"lte": 24

}

}

},

"from": 0,

"size":2,

"_source": ["name","age"],

"sort": [

{

"age": {

"order": "desc"

}

}

]

}

#自动映射

GET /es_db/_mapping

#静态映射

DELETE /es_db_static

PUT /es_db_static

{

"mappings": {

"properties": {

"name": {

"type": "keyword",

"index": true,

"store": true

},

"sex": {

"type": "integer",

"index": true,

"store": true

},

"age": {

"type": "integer",

"index": true,

"store": true

},

"book": {

"type": "text",

"index": true,

"store": true

},

"address": {

"type": "text",

"index": true,

"store": true

}

}

}

}

GET /es_db_static

#分页

#match all 查询

GET /es_db/_search

{

"query": {

"match_all": {}

},

"size": 10001,

"from": 0

}

#改数量20000

PUT /es_db/_settings

{

"index.max_result_window":"10000"

}

#除了返回前面2条记录,还返回了一个游标ID 值 scroll_id

GET /es_db/_search?scroll=1m

{

"query": {"match_all": {}},

"size": 2

}

#scroll_id 的值就是上一个请求中返回的_scroll_id的值

GET /_search/scroll

{

"scroll":"1m",

"scroll_id" : "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFmVITmJGSkdhUzRpcm1Iby03SHQybVEAAAAAApgTQBZ1bjBJUTU3cFE1U1RwWm5EckFYbnN3"

}

GET /es_db/_search

#改用 and 四个字必须有

POST /es_db/_search

{

"query": {

"match": {

"address": {"query": "石湖东路","operator": "and"}

}

}

}

or 有一个字就满足

POST /es_db/_search

{

"query": {

"match": {

"address": "石湖东路"

}

}

}

#必须匹配两个以上

POST /es_db/_search

{

"query": {

"match": {

"address": {"query": "石湖东路","minimum_should_match": 2}

}

}

}

#bool

DELETE /es_db_good

put /es_db_good

put /es_db_good/_doc/1

{

"name":"huaren 2026",

"desc":"huaren 2026 Description",

"brand":"HuaRen",

"price":"1000",

"type":"erji",

"transtime":"2025-01-01 16:00:00"

}

put /es_db_good/_doc/2

{

"name":"huawei 2026",

"desc":"huawei 2026 Description",

"brand":"HuaWei",

"price":"2000",

"type":"phone",

"transtime":"2025-01-01 16:00:00"

}

put /es_db_good/_doc/3

{

"name":"xiaomi 10",

"desc":"xiaomi 2026 Description",

"brand":"Xiaomi",

"price":"3000",

"type":"phone",

"transtime":"2025-01-01 16:00:00"

}

put /es_db_good/_doc/4

{

"name":"Hongmi 10",

"desc":"xiaomi 2026 Description",

"brand":"Xiaomi",

"price":"3100",

"type":"phone",

"transtime":"2025-01-01 16:00:00"

}

#查询子句 多条件查询

#bool must 子句,多条件查询同时满足, match大小写不区分

GET /es_db_good/_search

{

"query": {

"bool": {

"must": [

{

"match": {

"brand": "xiaomi"

}

},

{

"range": {

"price": {

"gte": 3000,

"lte": 3010

}

}

}

]

}

}

}

#bool filter子句,多条件查询同时满足,score 是0分,并且结果会缓存

GET /es_db_good/_search

{

"query": {

"bool": {

"filter": [

{

"term": {

"type.keyword": "phone"

}

},

{

"range": {

"price": {

"gte": 1000,

"lte": 3000

}

}

}

]

}

}

}

#should子句

#条件1:name :Huawei Xiaomi

#OR

条件2:brand: xiaomi huawei

GET /es_db_good/_search

{

"query": {

"bool": {

"should": [

{

"match": {

"name": "huawei xiaomi"

}

},

{

"terms": {

"brand.keyword": ["HuaWei","Xiaomi"]

}

}

]

}

}

}

#Must Not子句 必须都不能满足

#Must Not !(条件一 and 条件二)

GET /es_db_good/_search

{

"query": {

"bool": {

"must_not": [

{

"range": {

"price": {

"gte": 2000,

"lte": 3000

}

}

},

{

"term": {

"type.keyword":{"value":"phone"}

}

}

]

}

}

}

#bool term keyword都不会对大小写进行转换

GET /es_db_good/_search

{

"query": {

"bool": {

"must": [

{"term": {

"brand.keyword": "xiaomi"

}

}

]

}

}

}

#higlight

GET /es_db_good/_search

{

"query": {

"multi_match": {

"query": "xiaomi",

"fields": ["name","desc"]

}

},

"highlight": {

"post_tags": ["</span>"],

"pre_tags": ["<span style='color:red'>"],

"fields": {

"*":{}

}

}

}

#聚合

DELETE /employees

PUT /employees

{

"mappings" : {

"properties" : {

"age" : {

"type" : "integer"

},

"gender" : {

"type" : "keyword"

},

"job" : {

"type" : "text",

"fields" : {

"keyword" : {

"type" : "keyword",

"ignore_above" : 50

}

}

},

"name" : {

"type" : "keyword"

},

"salary" : {

"type" : "integer"

}

}

}

}

PUT /employees/_bulk

{ "index" : { "_id" : "1" } }

{ "name" : "Emma", "age":32, "job":"Product Manager", "gender":"female", "salary":35000 }

{ "index" : { "_id" : "2" } }

{ "name" : "Underwood", "age":41, "job":"Dev Manager", "gender":"male", "salary":50000 }

{ "index" : { "_id" : "3" } }

{ "name" : "Tran", "age":25, "job":"Web Designer", "gender":"male", "salary":18000 }

{ "index" : { "_id" : "4" } }

{ "name" : "Rivera", "age":26, "job":"Web Designer", "gender":"female", "salary":22000 }

{ "index" : { "_id" : "5" } }

{ "name" : "Rose", "age":25, "job":"QA", "gender":"female", "salary":18000 }

{ "index" : { "_id" : "6" } }

{ "name" : "Lucy", "age":31, "job":"QA", "gender":"female", "salary":25000 }

{ "index" : { "_id" : "7" } }

{ "name" : "Byrd", "age":27, "job":"QA", "gender":"male", "salary":20000 }

#指标

#查询员工的最高和平均工资

POST /employees/_search

{

"size": 0,

"aggs": {

"max_salary": {

"max": { "field": "salary" }

},

"min_salary":{

"min":{

"field": "salary"

}

},

"avg_salary": {

"avg": { "field": "salary" }

}

}

}

#对salary 进行统计 一个聚合,输出多值

POST /employees/_search

{

"size": 0,

"aggs": {

"stats_salary": {

"stats": {

"field": "salary"

}

}

}

}

#cardinate对搜索结果去重,4种职位

POST /employees/_search

{

"size": 0,

"aggs": {

"cardinate": {

"cardinality": {

"field": "job.keyword"

}

}

}

}

#桶聚合

#获取job的分类信息,text类型不推荐进行分组统计

POST /employees/_search

{

"query": {

"range": {

"salary": {

"gte": 10000

}

}

},

"size": 0,

"aggs": {

"jobs": {

"terms": {

"field": "job.keyword",

"size": 5,

"order": {

"_count": "asc"

}

}

}

}

}

#指定size,不同工种种,年纪最大的3个员工具体信息

POST /employees/_search

{

"size": 0,

"aggs": {

"jobs": {

"terms": {

"field": "job.keyword"

},

"aggs":{

"old_employee":{

"top_hits": {

"size": 1,

"sort":[{

"age": {"order": "desc"}

}]

}

}

}

}

}

}

#管道集合

#在员工数最多的工种里面,找出平均工资最低的工种

POST employees/_search

{

"size": 0,

"aggs": {

"jobs": {

"terms": {

"field": "job.keyword",

"size": 5

},

"aggs": {

"avg_salary": {

"avg": {

"field": "salary"

}

}

}

},

"min_salary_by_job":{

"min_bucket": {

"buckets_path": "jobs>avg_salary"

}

}

}

}

#平均工资的统计分析

POST employees/_search

{

"size": 0,

"aggs": {

"jobs": {

"terms": {

"field": "job.keyword",

"size": 5

},

"aggs": {

"avg_salary": {

"avg": {

"field": "salary"

}

}

}

},

"stats_salary_by_job":{

"stats_bucket": {

"buckets_path": "jobs>avg_salary"

}

}

}

}

范围分组

直方图

相关推荐
Fanxt_Ja9 分钟前
Java中的引用类型以及区别的特点
java·开发语言·缓存
半夜修仙11 分钟前
总结:线程池
java·开发语言·笔记·学习
珂宝_20 分钟前
python打卡训练营Day41
python
uyeonashi23 分钟前
【从零开始学习QT】信号和槽
数据库·c++·qt·学习
猿小蔡-Cool23 分钟前
Kotlin 中 Lambda 表达式的语法结构及简化推导
开发语言·windows·kotlin
卡布奇诺-海晨32 分钟前
Redis分布式锁深度解析与最佳实践
数据库·redis·分布式
虾球xz34 分钟前
CppCon 2014 学习: C++ Test-driven Development
开发语言·c++·学习
小吴同学·1 小时前
OPC Client第6讲(wxwidgets):Logger.h日志记录文件(单例模式);登录后的主界面
开发语言·c++·单例模式·wxwidgets
小鹭同学_1 小时前
Java基础 Day26
java·开发语言
蓝婷儿1 小时前
6个月Python学习计划 Day 10 - 模块与标准库入门
java·python·学习