Elasticsearch核心技术与实战

  1. 首先咱们建立一个索引和类型,也就是一个数据库和一张表,同时定义了表的字段,文章的标题和内容采用ik分词器download:Elasticsearch核心技术与实战

PUT /renrensou
{
  "mappings": {
    "renrensou_v1": {
      "properties": {
        "title": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "platform": {
          "type": "text"
        },
        "author": {
          "type": "text"
        },
        "name": {
          "type": "text"
        },
        "date": {
          "type": "text"
        },
        "content": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "linkUrl": {
          "type": "text"
        }
      }
    }
  }
}
  1. 而后咱们能够采用爬虫技术,将本身的全部简书或是公众号文章爬取并导入到ElasticSearch,能够采用API的方式,也能够手动

PUT /renrensou/renrensou_v1/1
{
    "title" : "打破你的认知边界",
    "platform" : "简书",
    "author" : "理可",
    "name" : "理可",
    "date" : "2018-11-20",
    "content" : "我姓程,名序员,之前,我一直在用的开发工具是Eclipse.我写的第一个程序就是使用的Eclipse.因此我一直认为这是一个很好的工具. MyEcliipse 咱们公司大多数同事用的是Eclipse.后来,公司新来了一个应届生同事,他告诉我,他用的工具是IntelliJ IDEA,彻底没有用过Eclipse.给我说了IntelliJ IDEA的各类好处. 我虽然知道IntelliJ IDEA有不少好处,可是我不肯意改变,由于要我把开发工具换成IntelliJ IDEA,就表示我要离开本身的认知边界,这会让我很痛苦. IntelliJ IDEA 一开始我对IntelliJ IDEA有一些好奇,因而我尝试看一下网上的教程,而且安装了IntelliJ IDEA,尝试使用,可是很不舒服,由于两个工具的快捷键彻底不同,高频小套路也彻底不同,使用这个工具开发感受本身就是个菜鸟. 尝试了好几回用IntelliJ IDEA开发,可是都放弃了.由于一开始老是在百度怎么使用IntelliJ IDEA,很浪费时间. 因而我从新下载安装了MyEclipse的最新版,并放弃了IntelliJ IDEA,告诉应届生同事,其实Eclipse也很好用. 后来我换工做了,我惊奇的发现,这家公司全部的程序员都在用IntelliJ IDEA,而只有我在用MyEclipse,我想他们讨教,他们说他们以前也有用Eclipse的,可是转成IntelliJ IDEA. 后来我也强迫本身转IDEA,让本身从零开始,卸载Eclipse.不到1天的时间,我掌握了IntelliJ IDEA的绝大多数高频小套路. 而我也发现个人开发效率获得了指数级的增加,而不是一点点的增加. 我认为是IntelliJ IDEA软件优化的比Eclipse更好,软件更加流畅而且是专门为程序开发人员设计.Eclipse在软件流畅和提高效率方面相比IntelliJ IDEA稍弱一点. 我从中获得了什么? 每一个人会根据本身所在的群体和经验造成本身的认知边界,一我的的认知边界决定了一我的的认知高度 成长和进步的过程就是打破本身认知边界的过程 认知边界从内向外打破很是难 认知边界从外向内打破比较容易,好比有人带你,加入新的社群,换一个环境 每当打破本身的认知边界,就能得到数十倍到一百倍的增加.",
    "linkUrl" : "https://www.jianshu.com/p/bfdafd7e63d6"
}
  1. 关于ES 5.x版本以上的,统计次频的字段须要开启fielddata

PUT renrensou/_mapping/renrensou_v1/
{
  "properties": {
    "title": { 
      "type":     "text",
      "analyzer": "ik_max_word",
      "fielddata": true
    }
  }
}
  1. 统计本身文章中的词频,显示结果会包含关键字和词频数量

GET /renrensou/renrensou_v1/_search
{  
    "size" : 0,
    "aggs" : {   
        "messages" : {  
            "terms" : {   
                 "size" : 100,
              "field" : "content",
                "include" : "[\u4E00-\u9FA5][\u4E00-\u9FA5]"
            }  
        }  
    },
   "highlight": {
     "fields": {
      "message": {}
    }
  }     
}

6018dcee496a2c1f7aa4cb0caa163a3a.webp

1.pngphp

05

结果显示我写的文章里面最多的词可能是一些链接词,好比 若是,可是...程序员

固然具体分析的时候能够去除掉这些链接词.下面是我筛选出来的排名前5的有意义词汇web

          [{
               "key": "咱们",
               "doc_count": 28
            },
            {
               "key": "时间",
               "doc_count": 24
            },
            {
               "key": "本身",
               "doc_count": 24
            },
            {
               "key": "过程",
               "doc_count": 24
            },
            {
               "key": "实现",
               "doc_count": 23
            }]

固然是这是ES很小的一个使用方法,使用ElasticSearch也能够打造一个专属本身的搜索引擎.shell

相关文章
相关标签/搜索