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

相關文章
相關標籤/搜索