栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ES ik kibana 下载、ES查询、聚合、mapping

ES ik kibana 下载、ES查询、聚合、mapping

目录

ES

window 环境的elasticsearch  ik  kibana 下载

ES集群3种状态

模拟yellow 状态

副本数量修改

es常用查询json

单字段查询:

排序 

 多字段查询

指定返回源数据_source

 分页:

TERM查询

 _analyze 查看分词结果,验证分词:

多条件bool 查询。must  must_not  should

filter 过滤

 minimum_should_match 指定最小匹配

 高亮查询:

mapping 简单创建

自动创建mapping,不手动指定

手动指定mapping

聚合查询:

多层聚合查询


ES ik kibana 下载、ES查询、聚合、mapping

window 环境的elasticsearch  ik  kibana 下载

elasticsearch-7.3.0-windows-x86_64.zip

kibana-7.3.0-windows-x86_64.zip

elasticsearch-analysis-ik-7.3.0.zip

百度网盘地址:

链接:https://pan.baidu.com/s/17BXHicCN63yHdrl4mq16SQ 
提取码:s7w4 
--来自百度网盘超级会员V3的分享

ES集群3种状态

1、gree  :所有副本分片、主分片都正常运行【不能分配到活跃的节点上】,所在节点全部正常(数据完整)

2、yellow :所有主分片正常运行,副本分片存在一个或多个不能正常运行【不能分配到活跃的节点上】(数据完整,并发处理能力相对下降)

3、red :存在一个或多个主分片不能正常运行【不能分配到活跃的节点上】(数据不完整)

模拟yellow 状态

现在节点的状态是green  

手动新建一个索引文件,索引文件默认副本是1,所以索引文件learnindex 存储了两份,且相同索引相同分片的副本不能在同一个节点上。所以副本0(边框细的0没能被分配到活跃的节点上)所以状态从green 变成了yellow;

副本数量修改

ES是支持不停机修改副本分片数量的,需要注意的是 分片数量索引一旦创建就不能修改。(原因是因为多个分片数据应该存储在哪个分片中算法是和分片数量有关的)

修改语句:

http://127.0.0.1:9200/learnindex/_settings/

ip+端口+索引名称/_settings    (注意要使用put)

参数写 {"number_of_replicas":2}

es常用查询json

数据准备:

PUT people/_doc/1
{
  "name":"张三",
  "address":"北京市",
  "age":44
  
}
PUT people/_doc/2
{
  "name":"李四",
  "address":"河南省",
  "age":22
  
}
PUT people/_doc/3
{
  "name":"王五",
  "address":"郑州市",
  "age":54
  
}
PUT people/_doc/4
{
  "name":"张三",
  "address":"天津市",
  "age":30
  
}
PUT people/_doc/5
{
  "name":"葫芦娃",
  "address":"蛇精垌",
  "age":40
  
}


准备数据截图:

单字段查询:

GET /people/_search
{
  "query":{
    "match": {
      "name": "张三"
    }
  }
}

排序 


GET /people/_search
{
  "query":{
    "match": {
      "name": "张三"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

 多字段查询

GET /people/_search
{
  "query":{
    "multi_match": {
      "query": "天津",
      "fields": ["name","address"]
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

指定返回源数据_source

例如指定只返回姓名和年龄 name,age

GET /people/_search
{
  "query":{
    "multi_match": {
      "query": "天津",
      "fields": ["name","address"]
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "_source":[
    "name","age"]
}

 分页:


GET /people/_search
{
  "query":{
    "multi_match": {
      "query": "张",
      "fields": ["name","address"]
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from":0,"size": 1
}

TERM查询

term查询对你输入的词不会进行分词,上面数据初始化的时候,没有主动指定分词器。所以默认用的es 的standard 分词,会分成 ‘张’ ‘三’存储所以造成了下面截图,输入‘张’可以正常搜索到,输入‘张三'搜索不到的情况。

GET /people/_search
{
  "query":{
    "term": {
      "name": "张"
    }
  }
}

 GET /people/_search
{
  "query":{
    "term": {
      "name": "张三"
    }
  }
}

 _analyze 查看分词结果,验证分词:

可以看到下面使用"standard", 张三会分为 ‘张’ ‘三’, 使用ik 插件的ik_smart 会分为 ‘张三’。

所以上面使用term 查询‘张三’的时候 查询不到内容;

GET /people/_analyze
{
  "analyzer":"standard",
  "text":"张三"
}
 

GET /people/_analyze
{
  "analyzer":"ik_smart",
  "text":"张三"
}

多条件bool 查询。must  must_not  should

GET /people/_search
{
  "query":{
    "bool": {
      "must": [
        {
          "term": {
            "name": {
              "value": "张"
            }
          }
                 },{ "term":{"address":{"value":"市"}}}
      ]
    }
  }
}
 

filter 过滤

GET /people/_search
{
  "query":{
    "bool": {
      "must": [
        {
          "term": {
            "name": {
              "value": "张"
            }
          }
                 },{ "term":{"address":{"value":"市"}}}
      ],"filter": {"range": {
        "age": {
          "gte": 10,
          "lte": 40
        }
      }}}
    
  }
}

 minimum_should_match 指定最小匹配

相同查询语句,指定minimum_should_match 为1,查询有3条,指定minimum_should_match 为2 ,查询结果有2条

GET /people/_search
{
  "query":{
    "bool": {
      "should": [
        {
          "term": {
            "name": {
              "value": "张"
            }
          }
        },
        { "term":{"address":{"value":"市"}}}
      ],
      "minimum_should_match": 1}
    
  }
}
 

 高亮查询:

GET /people/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "name": {
              "value": "张"
            }
          }
        },
        {
          "term": {
            "address": {
              "value": "市"
            }
          }
        }
      ],
      "minimum_should_match": 1
    }
  },
  "highlight": {
    "fields": {
      "name": {
        "pre_tags": "",
        "post_tags": ""
      }
    }
  }
}
        

mapping 简单创建

自动创建mapping,不手动指定

PUT testmapping/_doc/1
{
  "nameString":"李四",
  "address":"河南省",
  "age":22,
  "shuzhi":33.42334,
  "booleType":true,
  "dataType":"2021-11-09"
  
  
}

 查看自动生成的mapping,发现es 可以识别常见的类型并自动设置mapping,

字符串->text

数值->long

"2021-11-09" ->date

22.33 -> float

 

手动指定mapping

PUT /test2
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text",
        "analyzer": "ik_smart",
        "index": true
      },
      "address": {
        "type": "text",
        "analyzer": "ik_smart",
        "index": true
      },
      "agg":{
        "type":"integer"
      },
      "dateType":{
        "type":"date"
      }
    }
  }
}

 

指定ik_smart 后上面使用‘张三’查询不到的情况 ,现在就可以查到了,因为 张三 智能分词分出来的为张三。 

聚合查询:

支持聚合查询的字段需要设置 fielddata=true  ;否则会有以下报错信息

 

按照名称聚合:

GET /test4/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "learnAgg": {
      "terms": {
        "field": "name"
      }
    }
  },"size": 0
}

 

多层聚合查询

多层聚合按照名称聚合后求年龄的和:

GET /test4/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "learnAgg": {
      "terms": {
        "field": "name"
      },"aggs": {
        "countage": {
          "sum": {
            "field": "agg"
          }
        }
      }
    }
  },"size": 0
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/460332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号