栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java ElasticSearch的实用功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java ElasticSearch的实用功能

创建索引
        CreateIndexRequest index = new CreateIndexRequest("book");
        CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(index, RequestOptions.DEFAULT);
        boolean acknowledged = createIndexResponse.isAcknowledged();
        System.out.println(acknowledged);
查询索引
		GetIndexRequest request=new GetIndexRequest("user");
		GetIndexResponse getIndexResponse = restHighLevelClient.indices().get(request, RequestOptions.DEFAULT);
		System.out.println(getIndexResponse.getAliases());
		System.out.println(getIndexResponse.getMappings());
		System.out.println(getIndexResponse.getSettings());
删除索引
       DeleteIndexRequest request=new DeleteIndexRequest("book");
        AcknowledgedResponse delete = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
        System.out.println(delete.isAcknowledged());
添加文档
IndexRequest request=new IndexRequest();
//不指定id则自动创建id
        request.index("book").id("1011");
        Book book=new Book();
//        book.setId(1);
        book.setName("书籍‘");
        String s = JSON.toJSONString(book);
        request.source(s,XContentType.JSON);
        IndexResponse index = restHighLevelClient.index(request, RequestOptions.DEFAULT);
        System.out.println(index.getResult());
更新
        UpdateRequest request=new UpdateRequest();
        request.index("book").id("1011");
        request.doc(XContentType.JSON,"name","jj");
        UpdateResponse update = restHighLevelClient.update(request, RequestOptions.DEFAULT);
        System.out.println(update.getResult());
实用的更新(查询后更新)
UpdateByQueryRequest updateByQueryRequest = new UpdateByQueryRequest("索引名");
    updateByQueryRequest.setQuery(new TermQueryBuilder("esopEnterpriseId", information.getTktEnterpriseInformationId()));
    Map params = new HashMap<>();
    params.put("dataState", information.getDataState());
    params.put("dataStateStr",information.getDataStateStr());
    script设置的是脚本, Script 构造器(脚本类型, 语言, 命令, 传入参数)
//脚本类型分为: ScriptType.INLINE 和 ScriptType.STORED
//lang语言 painless 是es自带的
    Script script = new Script(ScriptType.INLINE, "painless", "ctx._source.dataState=params.dataState;ctx._source.dataStateStr=params.dataStateStr", params);
    updateByQueryRequest.setScript(script);
    restHighLevelClient.updateByQuery(updateByQueryRequest, RequestOptions.DEFAULT);
多条件查询
            SearchRequest request1 = new SearchRequest("titems");
            //构建搜索条件
            SearchSourceBuilder builder = new SearchSourceBuilder();
            //按照颜色查询方法,其中keyword表示不分词匹配,把该词当成一个整体
            //QueryBuilders.matchQuery()表示模糊查询
            //QueryBuilders.termQuery()表示精确查询
            //条件判断,如果传入的属性为空的话则不执行该查询条件
            BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
            if(null != req.getItem_brand()){
                boolQueryBuilder.must(QueryBuilders.matchQuery("item_brand.keyword", req.getItem_brand()));
            }
            if(null != req.getItem_color()){
                boolQueryBuilder.must(QueryBuilders.matchQuery("item_color.keyword", req.getItem_color()));
            }
            //QueryBuilders.boolQuery().should(QueryBuilders.matchQuery()).should()
            //单条件查询
//            MatchQueryBuilder matchQueryBuilder = QueryBuilders.matchQuery("item_color.keyword", req.getItem_color());
            builder.query(boolQueryBuilder);

查询后排序然后转为对象
//1. 创建Request
      SearchRequest request = new SearchRequest(EsopEnterpriseInformationConstant.ES_ESOP_ENTERPRISE_INDEX_NAME);
      //2. 指定查询条件
      SearchSourceBuilder builder = new SearchSourceBuilder();
      builder.query(QueryBuilders.matchAllQuery());
      builder.size(10000);
      builder.sort("busiRegCityCode", SortOrder.ASC);
      builder.sort("busiRegCountyCode",SortOrder.ASC);
      builder.sort("busiRegGridCode",SortOrder.ASC);
      request.source(builder);
      //3. 执行查询
      SearchResponse resp = null;
      try {
          resp = restHighLevelClient.search(request, RequestOptions.DEFAULT);
      } catch (IOException e) {
          e.printStackTrace();
      }
      List list=new ArrayList<>();
      for (SearchHit hit : resp.getHits().getHits()) {
          String sourceAsString = hit.getSourceAsString();
          ESEnterpriseInformation information = JSONObject.parseObject(sourceAsString, ESEnterpriseInformation.class);
          list.add(information);
      }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028815.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号