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的元數據,決定了數據類型,建立倒排索引的行爲,還有進行搜索的行爲。