创建索引库和类型
PUT /articles
{
"mappings": {
"article":{
"properties": {
"id":{
"type": "keyword"
},
"title":{
"type": "text",
"analyzer": "ik_max_word"
},
"author":{
"type": "keyword"
},
"content":{
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
}
GET articles/article/_search
{
"query": {"match_all": {}}
}
创建TransportClient 交由工厂管理
@Configuration
public class TranClient {
@Bean
public TransportClient getTransportClient(){
try {
TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new TransportAddress(InetAddress.getByName("192.168.94.244"),9300));
return transportClient;
} catch (UnknownHostException e) {
e.printStackTrace();
return null;
}
}
}
es代码
public void save(Article article) {
try {
XContentBuilder xContentBuilder = XContentFactory.jsonBuilder();
XContentBuilder xContentBuilder1 = xContentBuilder.startObject()
.field("id", article.getId())
.field("title", article.getTitle())
.field("author", article.getAuthor())
.field("content", article.getContent()).endObject();
transportClient.prepareIndex("articles","article").setSource(xContentBuilder1).get();
} catch (IOException e) {
e.printStackTrace();
}
}
public List<Map<String, Object>> select(String userIndex) {
HighlightBuilder highlightBuilder = new HighlightBuilder();
highlightBuilder.requireFieldMatch(false).preTags("").postTags("").field("*");
List<Map<String, Object>> list = new ArrayList<>();
QueryStringQueryBuilder field = QueryBuilders.queryStringQuery(userIndex)
.field("title")
.field("author")
.field("content")
.analyzer("ik_max_word");
SearchResponse searchResponse = transportClient.prepareSearch("articles")
.setTypes("article")
.setQuery(field)
.highlighter(highlightBuilder)
.get();
SearchHit[] hits = searchResponse.getHits().getHits();
for (SearchHit hit : hits) {
Map<String, HighlightField> highlightFields = hit.getHighlightFields();
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
for (String key : highlightFields.keySet()) {
sourceAsMap.put(key, highlightFields.get(key).getFragments()[0].toString());
}
list.add(sourceAsMap);
}
return list;
}
public void del(){
}
service代码
@Override
public void save(Article article) {
article.setId(UUID.randomUUID().toString());
articleRepository.save(article);
articleDao.insert(article);
}
@Override
public void saveAll() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
articleRepository.del();
List<Article> select = articleDao.select();
for (Article article : select) {
articleRepository.save(article);
}
}
},1000,60000*2);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS)
public List<Map<String, Object>> select(String userIndex) {
List<Map<String, Object>> list = articleRepository.select(userIndex);
return list;
}
pom jar包
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>6.2.4</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>6.2.4</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>6.2.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.28</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>