ElasticSearch (map 데이터 형식) Java api 증가 (대량) 삭제 검사 (전체 필드, 하 이 라이트)

앞 에 구축 이 라 고 쓰 여 있 습 니 다. 오늘 은 자바 api 에 대한 추가 삭제 검사 와 전체 필드 조회 와 하 이 라이트 전시, 공식 api 주소 [https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html]. 1. 먼저 pom 의존, resource 파일
org.apache.logging.log4j
log4j-api
2.7


org.apache.logging.log4j
log4j-core
2.7


org.elasticsearch.client
transport
5.4.1
resource 파일 log4j. properties 를 추가 합 니 다.
###Console ###
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %d %p[%C:%L]- %m%n

TransportClient 의 인 스 턴 스 를 가 져 와 es 와 유사 한 연결 데이터베이스 코드 를 연결 합 니 다.
Settings settings=Settings.builder().put("cluster.name","yourclustername").build();
        TransportClient client = new PreBuiltTransportClient(settings).addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("yourhostaddress"), 9300));
Map testMap = new HashMap<>();
testMap.put("title","java 编程思想");
testMap.put("id",1);
//单个Map插入
IndexResponse response = client.prepareIndex("索引","yourtype",testMap.get("id")+"").setSource(testMap).get();
System.out.println(response.getResult());
client.close();
//批量插入
List> list = new ArryList<>();
for(int i=0;i<10;i++){
    testMap.put("id",i);
    list.add(testMap);
}
BulkRequestBuilder bulkRequestBuilder=client.prepareBulk();
for (int i=0;i
            bulkRequestBuilder.add(client.prepareIndex("索引","yourtype").setId(list.get(i).get("id")+"").setSource(list.get(i)));
}
BulkResponse bulkResponse=bulkRequestBuilder.execute().actionGet();
bulkRequestBuilder.request().requests().clear();
if (bulkResponse.hasFailures()){
    System.out.print("Fail");
}
System.out.print(bulkResponse.status());
client.close();

삭제
//删除id为0的ES里的数据
DeleteResponse response = client.prepareDelete("索引","yourtype","0").get();
System.out.print(response.getResult());

3. 수정 (ID 를 추가 하 는 것 은 기 존의 ID 로 이전 데 이 터 를 덮어 쓰 는 것 입 니 다)
//修改ES里id为1的那条数据title改为Tinking in Java
testMap.put("title","Thinking in Java");
IndexResponse response = client.prepareIndex("索引","yourtype","1").setSource(testMap).get();
System.out.println(response.getResult());
client.close();

조사 하 다
QueryBuilder qb = QueryBuilders.multiMatchQuery("yourSearchString","_all");
HighlightBuilder highlightBuilder=new HighlightBuilder().field("*").requireFieldMatch(false);
highlightBuilder.preTags("");
highlightBuilder.postTags("");
String[] yourTypes={yourTypes};
            if (yourTypes==""||yourTypes==null){
               yourTypes=new String[0];
            }
SearchResponse response=client.prepareSearch("索引").setTypes(yourTypes).setFrom(pageIndex).setSize(pageSize).setQuery(qb).highlighter(highlightBuilder).execute().actionGet();
            SearchHits searchHits=response.getHits();
List sources=new ArrayList<>();
if (searchHits.totalHits>0){
    for (SearchHit hit:searchHits){
        Map source=hit.getSource();
        for (String key:hit.getSource().keySet()){                                                          HighlightField                 highlightField=hit.getHighlightFields().get(key);
            if (highlightField!=null){
                Text[]fragments=highlightField.fragments();
                String value="";
                for (Text text:fragments){
                    value+=text;
                }
                            //替换为高亮字段
                            source.put(key,value);
             }
        }
    Map esearch=new HashMap<>();
    esearch.put("source",esmap);
    esearch.put("total",searchHits.totalHits);
    sources.add(esearch);
}
    client.close();
    return sources;

색인 과 type 은 당신 이 직접 수 동 으로 작성 하 라 는 것 입 니 다. 이것 은 제 가 공식 api 가 쓴 열 이 부족 한 점 을 보 았 습 니 다. 여러분 의 많은 지 도 를 바 랍 니 다!오늘 은 이렇게 많이 썼 으 니 서로 토론 할 수 있 는 메 시 지 를 남 겨 주세요 ~ 잘 자 요 ~

좋은 웹페이지 즐겨찾기