Elasticsearch 后台开发

1.jar包

compile group: 'org.elasticsearch.client', name: 'transport', version: '5.1.1'
compile group: 'io.searchbox', name: 'jest', version: '5.3.3'

2.基本介绍

     1.index 为库名称(相当于数据库库名)

     2.type 为表明(相当于数据库中的表)

3.数据处理

    1.数据添加

 @Autowired
    private JestClient jestClient;

    @Override
    public void saveEntity(Picbook entity) {
       Index index = new Index.Builder(entity).index(Constants.ES_SEARCH_INDEX).type(Constants.ES_SEARCH_TYPE_PICBOOK).build();
        try {
            jestClient.execute(index);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

     2.数据删除

public boolean deleteDoc(String indexId, String indexName, String indexType) {
        Delete delete = new Delete.Builder(indexId).index(indexName).type(indexType).build();
        JestResult result = null ;
        try {
            result = jestClient.execute(delete);
            if (result != null && !result.isSucceeded()) {
                 throw new RuntimeException(result.getErrorMessage()+"删除文档失败!");
                }
            } catch (Exception e) {
              e.printStackTrace();
              return false;
            }
        return true;
  }

       3.数据查询

    

 public Map<String,Object> queryAll(PageInfo pageObj,String name, String title, String content,String description){
        SearchResult result = queryAll(pageObj, Constants.ES_SEARCH_INDEX, Constants.ES_SEARCH_TYPE_PICBOOK,name,title,content,description,null);
        SearchResult resultNew=queryAllNew(Constants.ES_SEARCH_INDEX, Constants.ES_SEARCH_TYPE_PICBOOK,name,title,content,description,null);
       Map<String, Object> map = new HashMap<>();
       if(resultNew.getTotal()!=null && resultNew.getTotal()!=null) {
          List<SearchResult.Hit<Picbook, Void>> list = result.getHits(Picbook.class);
          List<Picbook> lc = new ArrayList<Picbook>();
          for (int i = 0; i < list.size(); i++) {
              lc.add(list.get(i).source);
              System.out.println("score:" + list.get(i).score);
              System.out.println("source:" + list.get(i).source.getName());
          }
          map.put("list", lc);
          map.put("total", resultNew.getTotal());
      }
        return map;
    }


//分页查询
 SearchResult result;
    public <T> SearchResult queryAll(PageInfo pageInfo, String index, String type,String name,String title,String content,String description,String itemTitle){
        try{
            Map<String,String> map=new HashMap<>();
            if(title!=null) {
                map.put(title, name);
            }
            map.put(content,name);
            if(itemTitle!=null) {
                map.put(itemTitle, name);
            }
            if(description!=null) {
                map.put(description, name);
            }
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
            for (String in : map.keySet()) {
                String str = map.get(in);//得到每个key多对用value的值
                boolQueryBuilder.should(QueryBuilders.matchQuery(in,str));
            }
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(boolQueryBuilder);
            searchSourceBuilder.from((pageInfo.getPageNo()-1)*pageInfo.getPageSize());
            searchSourceBuilder.size(pageInfo.getPageSize());
            Search search = new Search.Builder(searchSourceBuilder.toString())
                    .addIndex(index).addType(type).build();
            result=jestClient.execute(search);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return result;
    }

  
//负责查询总数量
   public <T> SearchResult queryAllNew(String index, String type,String name,String title,String content,String description,String itemTitle){
        try{
            Map<String,String> map=new HashMap<>();
            if(title!=null) {
                map.put(title, name);
            }
            map.put(content,name);
            if(description!=null) {
                map.put(description, name);
            }
            if(itemTitle!=null) {
                map.put(itemTitle, name);
            }
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
            for (String in : map.keySet()) {
                String str = map.get(in);//得到每个key多对用value的值
                boolQueryBuilder.should(QueryBuilders.matchQuery(in,str));
            }
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.query(boolQueryBuilder);
            Search search = new Search.Builder(searchSourceBuilder.toString())
                    .addIndex(index).addType(type).build();
            result=jestClient.execute(search);
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        return result;
    }

猜你喜欢

转载自blog.csdn.net/weixin_42034166/article/details/83827988