elasticsearch(一) 基础入门级demo

创建索引:

public static void inits() throws IOException, InterruptedException, ExecutionException {
  
      TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
          .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
      client.admin().indices().prepareCreate("book").execute().actionGet(); 
     
      XContentBuilder builder = XContentFactory.jsonBuilder()
          .startObject()
          .startObject("article")
          .startObject("properties")
              .startObject("title").field("type", "string").field("store", "yes").endObject()
              .startObject("year").field("type", "integer").field("store", "yes").endObject()
              .startObject("content").field("type", "text").field("store", "yes").field("analyzer", "ik_max_word").field("search_analyzer","ik_max_word").endObject()
              .endObject()
              .endObject()
              .endObject();
       
      PutMappingRequest mapping = Requests.putMappingRequest("book").type("article").source(builder);
      client.admin().indices().putMapping(mapping).actionGet();
    }

添加数据:

public static void add() throws IOException, InterruptedException, ExecutionException {
      String json = "{\"title\":\"国歌\", \"year\":1885,\"content\":\"起来不愿做奴隶的人民,把我们的血肉筑成我们新的长城北上广南京天安门,中华民族到了最危险的时候,每个人们都。。。。\"}";
  
      TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
          .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
     
           
      IndexResponse indexResponse = client
          .prepareIndex("book", "article", "1")  
          .setSource(json, XContentType.JSON)
          .execute().get();
    }

查询数据:

@Test
    public static void searchAll() throws UnknownHostException {
      try {
        TransportClient client = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300));
        
        QueryBuilder queryBuilder = QueryBuilders.matchQuery("content", "天安门长城").analyzer("ik_max_word").operator(Operator.AND);
        HighlightBuilder highlightBuilder = new HighlightBuilder().field("*").requireFieldMatch(false);;
        highlightBuilder.preTags("<span style=\"color:red\">");
        highlightBuilder.postTags("</span>");
        SearchResponse searchResponse = client.prepareSearch("book").setTypes("article").highlighter(highlightBuilder).setQuery(queryBuilder).execute().actionGet();
        SearchHit[] hits = searchResponse.getHits().getHits();
        System.out.println(hits.length);
        for (SearchHit hit : hits) {
          Map<String, HighlightField> result = hit.getHighlightFields();
          //从设定的高亮域中取得指定域
          HighlightField titleField = result.get("content"); 
          //取得定义的高亮标签
          Text[] titleTexts =  titleField.fragments();    
          //为title串值增加自定义的高亮标签
          String title = "";  
          for(Text text : titleTexts){    
                title += text;  
          }
          System.out.println(title);
        }
      } catch(UnknownHostException e) {
        e.printStackTrace();
      }
    }


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值