当前位置: 首页 > ops >正文

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":"我爱你中国"
}


#索引创建、查询、删除
put /es_db
get /es_db
delete /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/1
{
  "name":"张三123",
  "sex":1,
  "age":24,
  "address":"苏州独墅湖公园",
  "remark":"java developer"
}

#查询所有数据,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":23,
  "address":"石湖东路118号",
  "addresstwo":"友翔路",
  "remark":"java developer"
}

put /es_db/_doc/6
{
  "name":"张三6",
  "sex":1,
  "age":23,
  "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

#静态映射

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
      }
    }
  }
}

#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" : "FGluY2x1ZGVfY29udGV4dF91dWlkDXF1ZXJ5QW5kRmV0Y2gBFmVITmJGSkdhUzRpcm1Iby03SHQybVEAAAAAApMDRhZ1bjBJUTU3cFE1U1RwWm5EckFYbnN3"
}


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
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"
        }
          
        }
      ]
    }
  }
}
 

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 }

范围分组

直方图

#桶聚合
#获取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"
      }
    }
  }
}
 

http://www.xdnf.cn/news/9616.html

相关文章:

  • 【STIP】安全Transformer推理协议
  • 每日八股文
  • TRS收益互换平台开发实践:从需求分析到系统实现
  • 音视频中的复用器
  • 变更数据捕获(CDC)与流处理引擎实现医疗数据实时同步(上)
  • MySQL 8主从同步实战指南:从原理到高可用架构落地
  • SSE流式传输
  • Kubernetes 中部署 kube-state-metrics 及 Prometheus 监控配置实战
  • Vue-06(“$emit”和事件修饰符)
  • Azure Devops pipeline 技巧和最佳实践
  • 【HarmonyOS Next之旅】DevEco Studio使用指南(二十八) -> 开发云对象
  • 华为OD机试真题——找终点(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Rust使用Cargo构建项目
  • 如何做好一个决策:基于 Excel的决策树+敏感性分析应用(针对多个变量)
  • 【Bug】定时任务中 Jpa Save 方法失效
  • 今天遇到的bug
  • 基于大数据的个性化购房推荐系统设计与实现(源码+定制+开发)面向房产电商的智能购房推荐与数据可视化系统 基于Spark与Hive的房源数据挖掘与推荐系统设计
  • Blob文件导出:FileReader是否必需?✨
  • 由enctype-引出post与get的关系,最后深究至请求/响应报文
  • 2026-2030工业发展解读系列:PLM/PDM系统解析报告(预览版)
  • 自动化测试常见函数(下篇)
  • 单卡即可微调大模型!内存占用仅1/8
  • 【全因子组及排序】2022-1-23
  • 技术为器,服务为本:AI时代的客服价值重构
  • 高效推理引擎深度解析:vLLM 与 TGI 架构设计与性能实战指南
  • 在 Linux 中,目录权限,mkdir -m 选项,用法
  • 机器人--里程计
  • leetcode hot100刷题日记——24.回文链表
  • DOM和BOM的区别
  • pip国内镜像源配置