注冊網(wǎng)站賬號違法嗎軟文廣告經(jīng)典案例300字
寫在前面
ElasticSearch是一個基于Lucene的搜索服務(wù)器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級搜索引擎。設(shè)計用于[云計算]中,能夠達(dá)到實時搜索,穩(wěn)定,可靠,快速,安裝使用方便。
可以這樣來對比elasticsearch和數(shù)據(jù)庫
索引(indices) ~~~~~~~~ 數(shù)據(jù)庫(databases)
類型(type) ~~~~~~~~ 數(shù)據(jù)表(table)
文檔(Document)~~~~~~~~ 行(row)
字段(Field) ~~~~~~~~ 列(Columns )
shards:分片數(shù)量,默認(rèn)5
replicas:副本數(shù)量,默認(rèn)1
引入庫
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.7.5'
implementation group: 'org.springframework.data', name: 'spring-data-elasticsearch', version: '4.4.13';
版本對應(yīng)要求見如下表格: 傳送門
Spring Data Release Train | Spring Data Elasticsearch | Elasticsearch | Spring Framework | Spring Boot |
---|---|---|---|---|
2023.0 (Ullmann) | 5.1.x | 8.7.1 | 6.0.x | 3.1.x |
2022.0 (Turing) | 5.0.x | 8.5.3 | 6.0.x | 3.0.x |
2021.2 (Raj) | 4.4.x[1] | 7.17.3 | 5.3.x | 2.7.x |
2021.1 (Q) | 4.3.x[1] | 7.15.2 | 5.3.x | 2.6.x |
2021.0 (Pascal) | 4.2.x[1] | 7.12.0 | 5.3.x | 2.5.x |
2020.0 (Ockham) | 4.1.x[1] | 7.9.3 | 5.3.2 | 2.4.x |
Neumann | 4.0.x[1] | 7.6.2 | 5.2.12 | 2.3.x |
Moore | 3.2.x[1] | 6.8.12 | 5.2.12 | 2.2.x |
Lovelace | 3.1.x[1] | 6.2.2 | 5.1.19 | 2.1.x |
Kay | 3.0.x[1] | 5.5.0 | 5.0.13 | 2.0.x |
Ingalls | 2.1.x[1] | 2.4.0 | 4.3.25 | 1.5.x |
配置連接
spring:elasticsearch:rest:uris: 10.10.88.163:9200username: rootpassword: pass123
配置信息讀取:
@RefreshScope
@ConfigurationProperties(ESProperties.PREFIX)
public class ESProperties {public static final String PREFIX = "spring.elasticsearch.rest";private Boolean enable = true;private String uris;private String userName;/*** Secret key是你賬戶的密碼*/private String password;}
連接初始化:
@AutoConfiguration
@EnableConfigurationProperties(ESProperties.class)
@ConditionalOnProperty(value = ESProperties.PREFIX + ".enabled", havingValue = "true", matchIfMissing = true)
public class ElasticSearchConfig extends AbstractElasticsearchConfiguration {private static final Logger logger = LogManager.getLogger(ElasticSearchConfig.class);@Resourceprivate ESProperties esProperties;@Override@Bean(destroyMethod = "close")public RestHighLevelClient elasticsearchClient() {final ClientConfiguration clientConfiguration = ClientConfiguration.builder().connectedTo(esProperties.getUris()).withBasicAuth(esProperties.getUserName(), esProperties.getPassword()).withConnectTimeout(RestClientBuilder.DEFAULT_CONNECT_TIMEOUT_MILLIS).withSocketTimeout(RestClientBuilder.DEFAULT_SOCKET_TIMEOUT_MILLIS).build();RestHighLevelClient client = RestClients.create(clientConfiguration).rest();try {logger.info("connect to elasticsearch:{} ", client.getLowLevelClient().getNodes());MainResponse response = client.info(RequestOptions.DEFAULT);MainResponse.Version version = response.getVersion();logger.info("elasticsearch version:{},lucene version:{}", version.getNumber(), version.getLuceneVersion());} catch (Exception e) {throw new RuntimeException(e);}return client;}
}
文件配置 spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=io.gamioo.core.elasticsearch.config.ElasticSearchConfig
DAO層:
public interface OperationLogRepository extends ElasticsearchRepository<OperationLog, String> {}
操作對象:
@ApiModel(value = "operation_log", description = "操作日志")
@Document(indexName = "operation_log_*")
public class OperationLog {@Idprivate String id;@ApiModelProperty("創(chuàng)建時間")@Field(name = "addTime", type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd'T'HH:mm:ssz")private Date addTime;}
邏輯操作:
@Resourceprivate OperationLogRepository repository;@Overridepublic Page<OperationLog> findAll(Pageable pageable) {return repository.findAll(pageable);}@Overridepublic Page<OperationLog> findByAddTimeBetween(LocalDateTime startTime, LocalDateTime endTime, Pageable pageable) {return repository.findByAddTimeBetween(startTime, endTime, pageable);}
Q&A
1.實際使用中一直報錯: missing authentication credentials for REST request
經(jīng)過多方查證,最后發(fā)現(xiàn)報錯原因是:配置ES時沒添加用戶名密碼驗證
總結(jié)
以上就是springboot集成es后的一個簡單使用,spring封裝過后的spring-boot-starter-data-elasticsearch使用起來還是非常方便簡單的。