項目2---十次方項目開發---後臺--es---0

spring的事務:https://www.cnblogs.com/xd502djj/p/10940627.html

----------------------------------------------------------------------------------01------------------------------------------------------------------------------------

只要不是java操作都是9200,Java操作是9300

內容:

  

luncence:https://blog.csdn.net/cying90/article/details/84342587

---------------------------------------------------------------------------------02-------------------------------------------------------------------------------------

搜索的流程說明:

站內用的最多的。

數據的索引,數據的分詞。

----------------------------------------------------------------------------03----------------------------------------------------------------------------------

es結構。

mongodb是數據庫集合文件。

----------------------------------------------------------------------------04----------------------------------------------------------------------------------

es的安裝。

win安裝es。

第一步:解壓

第二步:

java是9300其他是9200.

------------------------------------------------------------------------------05---------------------------------------------------------------------------------------

第一步:創建索引。創建索引是以put的方式提交的。

第二步:類型下添加文檔,添加文檔是post提交的。注意要在類型下添加文檔。

索引:tensquare_elasticsearch

類型:article

文檔:_id

查找:在索引類型下查找,查找是get的方式。

修改,沒有就增加:修改是put的形式。

增加:

精確查找按照id查詢:get方式提交。

條件查詢:支持模糊查詢。前提是分詞的。s不代表spring。

模糊查詢:模糊查詢是對詞條的模糊。

刪除:

注意都是restful的風格的。

----------------------------------------------------------------------------06----------------------------------------------------------------------------------

安裝head插件。

第一步:安裝

   npm install

第二步:.....參照文檔。

----------------------------------------------------------------------------07----------------------------------------------------------------------------------

跨域問題的解決:

連接:

----------------------------------------------------------------------------08----------------------------------------------------------------------------------

head的簡單使用:

----------------------------------------------------------------------------09----------------------------------------------------------------------------------

ik分詞器:

第一步:解壓,改名爲ik文件夾。

第二步:將ik文件夾扔到

就可以用了。

第三步:重啓服務器。

第四步:進行測試。

再次測試:

---------------

ik分詞如何加入詞條:

第一步:在文件夾添加.dic文件。

第二步:

第三步:測試

----------------------------------------------------------------------------10----------------------------------------------------------------------------------

搜索微服務的開發:

第一步:新建模塊

第二步:

引入破pom:

第三步:yml文件

server:
  port: 9007
spring:
  application:
    name: tensquare-search
  data:
    elasticsearch:
#      cluster-nodes: 192.168.79.129:9300
      cluster-nodes: 127.0.0.1:9300

第四步:寫啓動類

@SpringBootApplication
public class SearchApplication {
    public static void main(String[] args) {
        SpringApplication.run(SearchApplication.class,args);
    }

    @Bean
    public IdWorker idWorker(){
        return new IdWorker(1,1);
    }
}

做的功能:

----------------------------------------------------------------------------11----------------------------------------------------------------------------------

添加文章。

第一步:

type可以不用創建直接寫。

注意這個實體類不用都展示出來,只要展示我們用的就可以。

第二步:寫Dao

第三步:寫一套

第四步:測試下,添加

成功:

----------------------------------------------------------------------------12----------------------------------------------------------------------------------

簡單的搜索文章:

定義方法名自動的生成sql語句。

public interface SearchDao extends ElasticsearchRepository<Article,String> {

    Page<Article> findByTitleOrContentLike(String title, String content, Pageable pageable);
}

測試:

----------------------------------------------------------------------------13----------------------------------------------------------------------------------

elasticserach與mysql的同步問題:

我們自己存的話就自己保存,目前有logstash進行同步。

安裝:

第一步:解壓

進入:

第二步:輸入命令

-e:直接寫內容

-f:指定文件的路徑

語句的意思事鍵盤輸入什麼輸出什麼。

----------------------------------------------------------------------------14----------------------------------------------------------------------------------

同步的問題:

第一步:

這個文件。

第二步:

放入:

完善模板:

input {
  jdbc {
	  # mysql jdbc connection string to our backup databse
	  jdbc_connection_string => "jdbc:mysql://192.168.244.136:3306/tensquare_article?characterEncoding=UTF8"
	  # the user we wish to excute our statement as
	  jdbc_user => "root"
	  jdbc_password => "123456"
	  # the path to our downloaded jdbc driver  
	  jdbc_driver_library => "D:\softWork\logstash-5.6.8\mysqletc\mysql-connector-java-5.1.46.jar"
	  # the name of the driver class for mysql
	  jdbc_driver_class => "com.mysql.jdbc.Driver"
	  jdbc_paging_enabled => "true"
	  jdbc_page_size => "50"
	  #以下對應着要執行的sql的絕對路徑。
	  #statement_filepath => ""
	  statement => "SELECT id,title,content,state from  tb_article"
	  #定時字段 各字段含義(由左至右)分、時、天、月、年,全部爲*默認含義爲每分鐘都更新(測試結果,不同的話請留言指出)
      schedule => "* * * * *"
  }
}

output {
  elasticsearch {
	  #ESIP地址與端口
	  hosts => "127.0.0.1:9200" 
	  #ES索引名稱(自己定義的)
	  index => "tensquare_article"
	  #自增ID編號
	  document_id => "%{id}"
	  document_type => "article"
  }
  stdout {
      #以JSON格式輸出
      codec => json_lines
  }
}

第三步:

查看結果:

----------------------------------------------------------------------------15----------------------------------------------------------------------------------

logstash同步數據特徵:

數據庫少了數據,但是es不會少。

所以數據不要真的刪除,es同步可以更新,不可以刪除的。

----------------------------------------------------------------------------16----------------------------------------------------------------------------------

在docker中安裝es:

第一步在docker安裝es:

docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8

第二步:訪問下測試

第三步:創建索引庫

第四步:在java代碼換地址。

第五步:添加文檔:

這個是不能直接使用的。具體的解決辦法看下一節課。

----------------------------------------------------------------------------17----------------------------------------------------------------------------------

宿主機可以使用9300.

第一步:進入到容器裏面。

docker exec -it tensquare_es /bin/bash

第二步:

不能vi容器的配置文件,只能vi宿主機的配置文件。

拷貝文件到宿主機:退出容器拷貝不是停止容器。

docker cp tensquare_elasticsearch容器名稱:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

前提是容器要啓動了。

第三步:停止和刪除容器。

第四步:重新創建容器

docker run -di --name=tensquare_elasticsearch -p 9200:9200 -p 9300:9300 -v
/usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch
.yml elasticsearch:5.6.8

第五步:修改yml文件

表示所有的ip都是可以訪問的。

第六步:

重啓。報錯。

第七步:

第八步:重啓es。重啓虛擬機。

第九步:訪問。

----------------------------------------------------------------------------18----------------------------------------------------------------------------------

docker的ik分詞器的安裝:

首先測試下是不是用分詞器了:

第一步:

第二步:將ik分詞傳到宿主機器

第三步:複製到docker的es

docker cp ik tensquare_elasticsearch:/usr/share/elasticsearch/plugins
docker exec -it tensquare_elasticsearch /bin/bash

第四步驟:重啓

docker restart tensquare_elasticsearch

第五步:測試

http://127.0.0.1:9200/_analyze?analyzer=ik_smart&pretty=true&text=%E6%88%91%E6%98%AF%E7%A8%8B%E5%BA%8F%E5%91%98

----------------------------------------------------------------------------19----------------------------------------------------------------------------------

head插件:

第一步:修改跨域

加跨域語句

第二步:

docker restart tensquare_elasticsearch

第三步:

 

docker run -di --name=tensquare_header -p 9100:9100 mobz/elasticsearch-head:5

第四步:

---------------------------------------------------------------------------20----------------------------------------------------------------------------------

ES有用的文章:

mapping:https://segmentfault.com/a/1190000019006317

https://blog.csdn.net/napoay/article/details/73100110#323-store

save:https://blog.csdn.net/u013089490/article/details/84323762

倒排索引:https://www.cnblogs.com/cjsblog/p/10327673.html

b+Tree:https://tech.souyunku.com/?p=9543

--------------------------

關於es的補充:

第一篇博客:https://segmentfault.com/a/1190000019006317

http://192.168.244.136:9200/website/_mapping
上面是插入數據自動生成的mapping,還有手動生成的mapping。這種自動或手動爲index中的type建立的一種數據結構和相關配置,稱爲mapping。
mapping:當我們插入幾條數據,讓ES自動爲我們建立一個索引

倒排索引正則化。mapping本質上就是index的type的元數據,決定了數據類型,建立倒排索引的行爲,還有進行搜索的行爲。

發佈了304 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章