zoukankan      html  css  js  c++  java
  • Elasticsearch5.5.1学习笔记

    在linux下增加ik分词

    一、下载分词器安装包

    wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v5.5.1/elasticsearch-analysis-ik-5.5.1.zip

    二、解压并安装

    1.移动elasticsearch-analysis-ik-5.5.1.zip到安装目录的plugins目录

    mv elasticsearch-analysis-ik-5.5.1.zip /root/elasticsearch/elasticsearch-5.5.1/plugins/

    2.进入安装目录的plugins目录

    cd /root/elasticsearch/elasticsearch-5.5.1/plugins/

    3.解压

    unzip elasticsearch-analysis-ik-5.5.1.zip 

    4.删除压缩包

    rm -rf elasticsearch-analysis-ik-5.5.1.zip

    按照官方说明,这时已经成功安装了,重启ElasticSearch即可。

    三、测试

    使用的是postman工具

    扩展自己的分词:

    my.dic

    小米手机
    华为手机

    其他的查询语句:

    集群健康

    curl -X GET 'http://localhost:9200/_cluster/health?pretty=true'

    Elasticsearch有一个功能叫做聚合(aggregations),它允许你在数据上生成复杂的分析统计。它很像SQL中的GROUP BY但是功能更强大。

    megacorp/employee的格式:

     {
        "first_name" : "John",
        "last_name" : "Smith",
        "age" : 25,
        "about" : "I love to go rock climbing",
        "interests" : [
          "sports",
          "music"
        ]
      }

    找到所有职员中最大的共同点(兴趣爱好)是什么:

    {
        "aggs": {
            "all_interests": {
                "terms": {
                    "field": "interests.keyword"
                }
            }
        }
    }

    统计每种兴趣下职员的平均年龄:

    curl -X GET 'http://localhost:9200/megacorp/employee/_search?pretty=true' -d '
    {
        "aggs" : {
            "all_interests" : {
                "terms" : { "field" : "interests.keyword" },
                "aggs" : {
                    "avg_age" : {
                        "avg" : { "field" : "age" }
                    }
                }
            }
        }
    }’

    合并多子句

    {
        "query": {
            "bool": {
                "must": {
                    "match": {
                        "first_name": "doublas"
                    }
                },
                "must_not": {
                    "match": {
                        "last_name": "roger"
                    }
                }
            }
        }
    }

    查询语句里面加过滤条件:

    {
        "query": {
            "bool": {
                "filter": {
                    "term": {
                        "first_name": "john"
                    }
                },
                "must": {
                    "match": {
                        "last_name": "smith"
                    }
                }
            }
        }
    }

    查询是高亮:

    {
        "query":{
            "match":{
                "about":"rock climbing"
            }
        },
        "highlight":{
            "pre_tags":["<font color='red'>"],
            "post_tags":["</font>"],
            "fields":{
                "about":{}
            }
        }
    }

    multi_match查询

    http://localhost:9200/megacorp/employee/_search?pretty=true
    
    {
        "query":{
            "multi_match":{
                "query":"smith",
                "fields":["last_name","first_name"]
            }
        }
    }
    
    查询last_name,或first_name有smith的文档
    
    也可以使用通配符
    
    {
        "query":{
            "multi_match":{
                "query":"smith",
                "fields": "*_name"
            }
        }
    }

     对结果排序:

    {
        "query":{
            "match":{
                "last_name":"smith fir"
            }
        },
        "sort":{
            "age":"desc"
        }
    }

     多级排序

    {
        "query":{
            "match":{
                "about":"I like to collect"
            }
        },
        "sort":[
            {"age":{"order":"desc"}},
            {"_score":{"order":"desc"}}
        ]
    }

    实现分词动态加载:

    ik分词的配置中是可以远程加载词库的,此时新建一个web项目代表远程词库,例如我的词库地址为:

    配置:

    当我们启动ES的时候会看到相应的日志记录,如下:

     elasticsearch6.0.0 ik分词器 测试:

    curl -H "Content-Type: application/json" -XGET 'http://localhost:9200/_analyze?pretty=true' -d '

    > {
    > "analyzer":"ik_max_word",
    > "text":"中华人民共和国"
    > }'
  • 相关阅读:
    spring事务传播机制实例讲解
    一篇关于交叉编译的文章
    Java中的泛型方法
    层序遍历打印二叉树
    寻找第K大 网易2016实习研发工程师编程题
    二叉树的非递归遍历
    二叉树 网易2016实习研发工程师编程题
    比较重量 网易2016实习研发工程师编程题
    网络地址为172.16.0.0,采用子网掩码255.255.224.0 .以下说法正确的是?
    2.7链表 回文链表
  • 原文地址:https://www.cnblogs.com/james-roger/p/8990304.html
Copyright © 2011-2022 走看看