目的
添加索引删除索引添加文档删除文档批量添加批量删除搜索文档高亮搜索分页搜索获得文档
仓库链接
es基本概念、安装es
gitee仓库地址
yaml
spring:
elasticsearch:
jest:
uris: http
://127.0.0.1
:9200/
read-timeout: 300s
connection-timeout: 5s
application:
name: es
-jest
-api
依赖
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-test
</artifactId>
</dependency>
<dependency>
<groupId>io.searchbox
</groupId>
<artifactId>jest
</artifactId>
<version>6.3.1
</version>
</dependency>
<dependency>
<groupId>org.jsoup
</groupId>
<artifactId>jsoup
</artifactId>
<version>1.10.2
</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat
</groupId>
<artifactId>jackson-dataformat-xml
</artifactId>
<version>2.9.8
</version>
</dependency>
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-json
</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba
</groupId>
<artifactId>fastjson
</artifactId>
<version>1.2.68
</version>
</dependency>
<dependency>
<groupId>org.projectlombok
</groupId>
<artifactId>lombok
</artifactId>
<version>1.18.0
</version>
</dependency>
<dependency>
<groupId>org.springframework.boot
</groupId>
<artifactId>spring-boot-starter-data-elasticsearch
</artifactId>
</dependency>
配置
@Configuration
public class EsConfig {
@Bean
public JestClient
jestClient() {
JestClientFactory factory
= new JestClientFactory();
factory
.setHttpClientConfig(new HttpClientConfig
.Builder("http://localhost:9200")
.defaultMaxTotalConnectionPerRoute(20)
.maxTotalConnection(20)
.build());
return factory
.getObject();
}
}
测试程序
@RunWith(SpringRunner
.class)
@SpringBootTest
public class JestApiApplicationTest {
@Autowired
private JestClient client
;
@Autowired
private TestEs test
;
@Test
public void createIndex1() throws IOException
{
JestResult articles
= client
.execute(new CreateIndex.Builder("articles").build());
System
.out
.println(articles
.getResponseCode());
}
@Test
public void createIndex2() throws IOException
{
Settings
.Builder builder
= Settings
.builder();
builder
.put("number_of_shards", 5);
builder
.put("number_of_replicas", 1);
System
.out
.println(client
.execute(new CreateIndex.Builder("dianhun").settings(builder
.build().toString()).build()).getResponseCode());
}
@Test
public void createDocument() throws IOException
{
Article article
= new Article();
article
.setDocumentId(1L
).setContent("测试").setDocumentVersion(1L
);
DocumentResult execute
= client
.execute(new Index.Builder(article
).index("articles").type("test").build());
System
.out
.println(execute
.getIndex());
System
.out
.println(execute
.getResponseCode());
}
@Test
public void searchDocument() throws IOException
{
SearchSourceBuilder searchSourceBuilder
= new SearchSourceBuilder();
searchSourceBuilder
.query(QueryBuilders
.matchQuery("content", "测试"));
HighlightBuilder highlightBuilder
= new HighlightBuilder();
highlightBuilder
.field("content");
highlightBuilder
.preTags("<em>").postTags("</em>");
highlightBuilder
.fragmentSize(500);
searchSourceBuilder
.highlighter(highlightBuilder
);
searchSourceBuilder
.size(1);
searchSourceBuilder
.from(1);
Search search
= new Search.Builder(searchSourceBuilder
.toString())
.addIndex("articles")
.addType("test")
.build();
SearchResult result
= client
.execute(search
);
List
<SearchResult
.Hit
<Article, Void>> hits
= result
.getHits(Article
.class);
for (SearchResult
.Hit
<Article, Void> hit
: hits
) {
System
.out
.println(hit
.source
);
}
System
.out
.println(hits
.size());
for (SearchResult
.Hit
<Article, Void> hit
: hits
) {
Article source
= hit
.source
;
Map
<String
, List
<String>> highlight
= hit
.highlight
;
List
<String> views
= highlight
.get("content");
if (views
!= null
) {
source
.setContent(views
.get(0));
}
System
.out
.println(source
.getContent());
System
.out
.println(source
.getDocumentVersion());
System
.out
.println(source
.getDocumentId());
}
}
@Test
public void deleteDocument() throws IOException
{
System
.out
.println(client
.execute(new Delete.Builder("QLvqV3QBE58Ym5AMkovS")
.index("articles")
.type("test")
.build()).getResponseCode());
}
@Test
public void Bulk1() throws IOException
{
Article article1
= new Article();
article1
.setDocumentId(11L
).setContent("测试 ctr").setDocumentVersion(1L
);
Article article2
= new Article();
article2
.setDocumentId(12L
).setContent("测试 ccc").setDocumentVersion(1L
);
Article article3
= new Article();
article3
.setDocumentId(13L
).setContent("测试 dianhun").setDocumentVersion(1L
);
Bulk bulk
= new Bulk.Builder()
.defaultIndex("articles")
.defaultType("test")
.addAction(new Index.Builder(article1
).build())
.addAction(new Index.Builder(article2
).build())
.addAction(new Index.Builder(article3
).build())
.build();
client
.execute(bulk
);
}
@Test
public void Bulk2() throws IOException
{
ArrayList
<Index> list
= new ArrayList<>();
for (int i
= 0; i
< 3; i
++) {
Article article
= new Article().setContent(UUID
.randomUUID().toString().substring(0, 3))
.setDocumentId(i
* 12 + 2)
.setDocumentVersion(i
* 11);
list
.add(new Index.Builder(article
).build());
}
Bulk bulk
= new Bulk.Builder()
.defaultIndex("articles")
.defaultType("test")
.addAction(list
)
.build();
System
.out
.println(client
.execute(bulk
).getResponseCode());
}
@Test
public void get() throws IOException
{
Get get
= new Get.Builder("articles", "11").type("test").build();
JestResult result
= client
.execute(get
);
System
.out
.println(result
.getSourceAsObject(Article
.class));
}
}
官方文档
https
://github
.com
/searchbox
-io
/Jest
/tree
/master
/jest