亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring 4+ElasticSearch如何集成

發布時間:2021-12-16 11:49:08 來源:億速云 閱讀:237 作者:小新 欄目:開發技術

小編給大家分享一下Spring 4+ElasticSearch如何集成,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一: ElasticSearch 基本概念

INDEX:這是ES存儲數據的地方,類似于關系數據庫的DATABASE。


Document TYPE:嗯,類似關系數據庫的表,主要功能是將完全不同SCHEMA(這個概念以后會講到,不急)的數據分開,一個INDEX里面可以有若干個Document TYPE。


Document:好吧,這個類似關系數據庫的一行,在同一個Document TYPE下面,每一Document都有一個唯一的ID作為區分;


Filed:類似關系數據庫的某一列,這是ES數據存儲的最小單位。


Cluster和Node:ES可以以單點或者集群方式運行,以一個整體對外提供search服務的所有節點組成cluster,組成這個cluster的各個節點叫做node。


shard:通常叫分片,這是ES提供分布式搜索的基礎,其含義為將一個完整的INDEX分成若干部分存儲在相同或不同的節點上,這些組成INDEX的部分就叫做shard。


Replica:和REPLICATION通常指的都是一回事,即INDEX的冗余備份,可以用于防止數據丟失,或者用來做負載分擔。


二: ElasticSearch TransportClient和NodeClient

如果你使用Java,ElasticSearch 提供Transport CLIENT和Node CLIENT兩種連接方式。transport CLIENT充當ES集群和你的應用直接的通信層,它知道API,并且能夠在節點間自動輪循。


Node CLIENT,事實上是集群中的一個節點(但是不存儲數據,并且不能作為主節點),由于它是一個節點,它知道整個集群的狀態(全部節點都在哪,哪些分片在哪些節點上等等),這意味著它執行API時可以少用一個網絡跳躍。


但需要完整的Node節點參數配置。


兩種CLIENT的使用場景:


1.如果你想讓你的應用和集群解耦,transport CLIENT是一個理想的選擇。例如,如果你的集群快速創建和銷毀連接,那么transport CLIENT比node CLIENT輕很多,因為它不是集群的一部分。


同樣,如果你需要創建上千個連接,但是你不希望有上千個node CLIENT加入你的集群,transport CLIENT將是一個更好的選擇。


2.在另一方面,如果你只需要幾個長連接的,能持久的連接到集群,node CLIENT會更高效一點,因為它知道集群的結構,但是要注意防火墻影響相關通信的問題。


三:與Spring 集成


  1. @Configuration

  2. @PropertySource("classpath:context-datasource.properties")

  3. public class ElasticSearchElConfig {

  4.     @Value("${el.cluster.name}")

  5.     private String elClusterName;

  6.     @Value("${el.cluster.node1.url}")

  7.     private String elClusterNode1Url;

  8.     @Value("${el.cluster.node1.port}")

  9.     private Integer elClusterNode2Port;


  10.     @Bean(name = "elasticSearchClient")

  11.     public Client elasticSearchClient() {

  12.         Map<String, Object> settimgMap = new HashMap<String, Object>();

  13.         settimgMap.put("cluster.name", elClusterName);


  14.         Settings settings = Settings.settingsBuilder().put(settimgMap).build();


  15.         TransportClient client = TransportClient.builder().settings(settings).build()

  16.                 .addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress(elClusterNode1Url, elClusterNode2Port)));

  17.         return client;


  18.     }


  19.     @Bean(name = "elasticTemplate")

  20.     public ElasticsearchTemplate elasticTemplate(Client elasticSearchClient) {

  21.         return new ElasticsearchTemplate(elasticSearchClient);

  22.     }


  23.     @Autowired

  24.     private Environment environment;


  25.     @Bean

  26.     public static PropertySourcesPlaceholderConfigurer propertyConfigure() {

  27.         return new PropertySourcesPlaceholderConfigurer();

  28.     }

  29. }


四:Demo

文檔類


點擊(此處)折疊或打開

  1. @Document(indexName="gmap_system_log_index",type="gmap_system_log")

  2. public class Logs extends ValueObject{


  3.     /**

  4.      *

  5.      */

  6.     private static final long serialVersionUID = 1L;

  7.     

  8.     @Field(type=FieldType.Integer,index=FieldIndex.not_analyzed,store=true)

  9.     private Integer userId;

  10.     @Field(type=FieldType.String,index=FieldIndex.not_analyzed,store=true)

  11.     private String system;

  12.     @Field(type=FieldType.String,index=FieldIndex.not_analyzed,store=true)

  13.     private String url;

  14.     @Field(type=FieldType.String,index=FieldIndex.analyzed,store=true)

  15.     private String content;

  16.     /**

  17.      * @return the userId

  18.      */

  19.     public Integer getUserId() {

  20.         return userId;

  21.     }

  22.     /**

  23.      * @param userId the userId to set

  24.      */

  25.     public void setUserId(Integer userId) {

  26.         this.userId = userId;

  27.     }

  28.     /**

  29.      * @return the system

  30.      */

  31.     public String getSystem() {

  32.         return system;

  33.     }

  34.     /**

  35.      * @param system the system to set

  36.      */

  37.     public void setSystem(String system) {

  38.         this.system = system;

  39.     }

  40.     /**

  41.      * @return the url

  42.      */

  43.     public String getUrl() {

  44.         return url;

  45.     }

  46.     /**

  47.      * @param url the url to set

  48.      */

  49.     public void setUrl(String url) {

  50.         this.url = url;

  51.     }

  52.     /**

  53.      * @return the content

  54.      */

  55.     public String getContent() {

  56.         return content;

  57.     }

  58.     /**

  59.      * @param content the content to set

  60.      */

  61.     public void setContent(String content) {

  62.         this.content = content;

  63.     }

  64.     

  65.     

  66. }


服務類


點擊(此處)折疊或打開

  1. import java.util.ArrayList;

  2. import java.util.List;


  3. import org.springframework.beans.factory.annotation.Autowired;

  4. import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;

  5. import org.springframework.data.elasticsearch.core.query.IndexQuery;

  6. import org.springframework.data.elasticsearch.core.query.IndexQueryBuilder;

  7. import org.springframework.stereotype.Component;


  8. /**

  9.  * TODO:

  10.  *

  11.  * @author gengchong

  12.  * @date 2017年4月28日 下午4:24:01

  13.  */

  14. @Component("elasticSearchDemo")

  15. public class ElasticSearchDemo {


  16.     @Autowired

  17.     private ElasticsearchTemplate elasticTemplate;


  18.     /**

  19.      * 創建索引

  20.      */

  21.     public void createGmapLogsIndex() {

  22.         System.out.println(elasticTemplate.createIndex(Logs.class));

  23.     }


  24.     /**

  25.      * 批量添加文檔

  26.      *

  27.      * @param logs

  28.      */

  29.     public void createGmapLogs(List<Logs> logs) {

  30.         List<IndexQuery> queries = new ArrayList<>();

  31.         for (Logs log : logs) {

  32.             IndexQuery indexQuery = new IndexQueryBuilder().withObject(log).build();

  33.             queries.add(indexQuery);

  34.         }


  35.         elasticTemplate.bulkIndex(queries);

  36.     }


  37.     /**

  38.      * 添加文檔

  39.      *

  40.      * @param log

  41.      */

  42.     public void createGmapLog(Logs log) {

  43.         List<Logs> logs = new ArrayList<>();

  44.         logs.add(log);

  45.         createGmapLogs(logs);

  46.     }


  47. }

以上是“Spring 4+ElasticSearch如何集成”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

墨玉县| 兰西县| 海门市| 通州区| 崇义县| 松江区| 湖北省| 武宣县| 桐城市| 黄浦区| 中宁县| 腾冲县| 湘乡市| 马边| 汉川市| 通辽市| 大竹县| 三门县| 昌都县| 文安县| 当阳市| 贵德县| 扬州市| 忻州市| 屏南县| 无为县| 皮山县| 新巴尔虎右旗| 涡阳县| 全南县| 宁陵县| 新绛县| 万安县| 和田县| 荔浦县| 祁阳县| 汶川县| 休宁县| 阿克陶县| 高台县| 章丘市|