面试题:1、filter和query的区别?2、为什么要用ES?
1、filter不考虑相关度(得分)排序,性能高,query考虑相关度排序,性能低。
2、实时搜索性能高,自带集群功能,
一、DSL搜索
DSL(Domain Specific Language)是ES提出的基于json的搜索方式,在搜索时传入特定的json格式的数据来完成不 同的搜索需求。
DSL比URI搜索方式功能强大,在项目中建议使用DSL方式来完成搜索。
二、查询所有文档
@Autowired
RestHighLevelClient client;
@Autowired
RestClient restClient;
@Test
public void testSearchAll() throws IOException {
SearchRequest searchRequest = new SearchRequest("xc_course");
searchRequest.types("doc");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchSourceBuilder.fetchSource(new String[]{
"name","studymodel","description"},new String[]{
});
searchRequest.source(searchSourceBuilder);
SearchResponse search = client.search(searchRequest);
SearchHits hits = search.getHits();
long totalHits = hits.getTotalHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
String id = hit.getId();
String index = hit.getIndex();
float score = hit.getScore();
String sourceAsString = hit.getSourceAsString();
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
String name = (String) sourceAsMap.get("name");
String studymodel =