前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【elasticsearch】基本操作

【elasticsearch】基本操作

作者头像
周杰伦本人
发布2022-10-25 15:40:17
1440
发布2022-10-25 15:40:17
举报
文章被收录于专栏:同步文章
代码语言:javascript
复制
##查询所有查询
GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["account_number","balance"]
}


##全文检索,match的字段如果是一个文本,自动的进行分词,进行模糊匹配。
##倒排索引?
GET bank/_search
{
  "query": {
    "match": {
      "address": "990 Mill Road"
    }
  }
}

##精确匹配,不进行分词模糊,keyword
GET bank/_search
{
  "query": {
    "match": {
      "address.keyword": "990 Mill Road"
    }
  }
}

##精确匹配,不进行分词模糊,match_phrase
GET bank/_search
{
  "query": {
    "match_phrase": {
      "address": "990 Mill Road"
    }
  }
}


##多字段匹配
GET bank/_search
{
  "query": {
    "multi_match": {
      "query": "mill ak",
      "fields": ["address","state"]
    }
  }
}

##复合查询;多个查询条件组合起来进行查询
##查询address里面包含Mill,并且gender是M,如果年龄在20-30之间最好,并且state必须不是IL
GET bank/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "address": "Mill"
          }
        },
        {
          "match_phrase": {
            "gender": "M"
          }
        }
      ],
      "must_not": [
        {"match": {
          "state": "IL"
        }}
      ],
      "should": [
        {"range": {
          "age": {
            "gte": 20,
            "lte": 30
          }
        }}
      ]
    }
  }
}



GET  bank/_search
{
  "query": {
    "bool": {
      "must": [
        {"match": {
          "gender": "M"
        }}
      ]
    }
  }
}

##过滤查询;只过滤满足的结果,不评分。
##以后除了全文检索需要评分。剩下查询用过滤效果是一模一样,不用评分。query比filter,因为query要评分
GET bank/_search
{
  "query": {
    "bool": {
      "filter": {
        "match": {
          "gender": "M"
        }
      }
    }
  }
}

##term查询;对于一些精确至的查询可以用term。
#term用于哪些类型不是文本的。age:22,status:true
#name:"";字符串不用来term。term某个字段必须匹配某个值;terms用来某个字段可以匹配多个值

##每一个是text类的字段,都有一个 属性.keyword字段,代表非text类型。可以用来精确匹配
GET bank/_search
{
  "query": {
    "terms": {
      "age": [
        "22",
        "25"
      ]
    }
  }
}

GET bank/_search
{
  "query": {
    "term": {
      "gender.keyword": "M"
    }
  }
}


##聚合:用来分析数据
GET bank/_search


##计算平均年龄
GET bank/_search
{
  "aggs": {
    "all_avg_age": {
      "avg": {
        "field": "age"
      }
    }
  }
}


#搜索address中包含mill的所有人的年龄分布以及平均年龄。
GET bank/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "age_count": {
      "terms": {
        "field": "age",
        "size": 1000
      }
    },
    "age_avg":{
      "avg": {
        "field": "age"
      }
    }
  }
}

##按照年龄聚合,并且请求这些年龄段的这些人的平均薪资
GET bank/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "age_count": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "avg_balance": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}

##查出所有年龄分布,并且这些年龄段中M的平均薪资和F的平均薪资以及这个年龄段的总体平均薪资
GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "age_count": {
      "terms": {
        "field": "age"
      },
      "aggs": {
        "gender_count":{
          "terms": {
            "field": "gender.keyword"
          },
          "aggs": {
            "avg_balance": {
              "avg": {
                "field": "balance"
              }
            }
          }
        }
      }
    }
  }
}

##查出bank中所有高于平均薪资的这些男生以及他们的最高薪资和最低薪资,女生也一样。
GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "avg_balance": {
      "avg": {
        "field": "balance"
      }
    },
    "gender_count":{
      "terms": {
        "field": "gender.keyword"
      },
      "aggs": {
        "gender_avg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档