Loading

Elastic Stack:es JavaApi实现索引管理

一.创建索引

@SpringBootTest(classes = SearchApplication.class)
@RunWith(SpringRunner.class)
public class TestIndex {
    @Qualifier("restHighLevelClient")
    @Autowired
    RestHighLevelClient client;

    @Test
    public void test1() throws IOException, InterruptedException {
        CreateIndexRequest request = new CreateIndexRequest("my_index");
        //设置参数
        request.settings(Settings.builder().put("number_of_shards","1").put("number_of_replicas","1").build());
        //1.指定mapping映射
        /*Map<String, Object> field1 = new HashMap<>();
        field1.put("type","text");
        field1.put("analyzer","standard");
        Map<String, Object> field2 = new HashMap<>();
        field2.put("type","text");
        Map<String, Object> properties =new HashMap<>();
        properties.put("field1",field1);
        properties.put("field2",field2);
        Map<String,Object> mapping = new HashMap<>();
        mapping.put("properties",properties);
        request.mapping(mapping);*/
        //2.指定mapping映射
        XContentBuilder builder = XContentFactory.jsonBuilder();
        builder.startObject();
        {
            builder.startObject("properties");
            {
                builder.startObject("field1");
                {
                    builder.field("type","text");
                }
                builder.endObject();
                builder.startObject("field2");
                {
                    builder.field("type","text");
                }
                builder.endObject();
            }
            builder.endObject();
        }
        builder.endObject();
        request.mapping(builder);
        //设置别名
        request.alias(new Alias("prod_index"));
        //可选参数
        //超时时间
        request.setTimeout(TimeValue.timeValueSeconds(5));
        //主节点超时时间
        request.setMasterTimeout(TimeValue.timeValueSeconds(5));
        //设置创建索引api返回相应之前等待活动分片的数量
        request.waitForActiveShards(ActiveShardCount.from(1));

        //执行
        //CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

        //异步
        ActionListener<CreateIndexResponse> listener = new ActionListener<>() {

            @Override
            public void onResponse(CreateIndexResponse createIndexResponse) {
                System.out.println(createIndexResponse.isAcknowledged());
                System.out.println(createIndexResponse.isShardsAcknowledged());
            }

            @Override
            public void onFailure(Exception e) {
                e.printStackTrace();
            }
        };
        client.indices().createAsync(request,RequestOptions.DEFAULT,listener);
        Thread.sleep(5000);
    }
}

 二.删除索引

    @Test
    public void testDelete() throws InterruptedException {
        DeleteIndexRequest indexRequest = new DeleteIndexRequest("my_index");
        /*AcknowledgedResponse response = client.indices().delete(indexRequest,RequestOptions.DEFAULT);
        System.out.println(response.isAcknowledged());*/
        //异步
        ActionListener<AcknowledgedResponse> responseActionListener = new ActionListener<>() {
            @Override
            public void onResponse(AcknowledgedResponse response) {
                System.out.println(response.isAcknowledged());
            }

            @Override
            public void onFailure(Exception e) {
                e.printStackTrace();
            }
        };
        client.indices().deleteAsync(indexRequest,RequestOptions.DEFAULT,responseActionListener);
        Thread.sleep(5000);
    }

 三.查看索引是否存在

    @Test
    public void testExist() throws IOException {
        GetIndexRequest request = new GetIndexRequest("my_index");
        //从主节点返回本地索引信息状态
        request.local(false);
        //可读性
        request.humanReadable(true);
        //是否返回每个索引的所有默认设置
        request.includeDefaults(false);
        System.out.println(client.indices().exists(request, RequestOptions.DEFAULT));
    }

 四.关闭索引

关闭索引后,该索引就不能添加文档了,需要重新开启索引。

    @Test
    public void testClose() throws IOException {
        CloseIndexRequest request = new CloseIndexRequest("my_index");
        CloseIndexResponse close = client.indices().close(request, RequestOptions.DEFAULT);
        System.out.println(close.isAcknowledged());
    }

 五.打开索引

    @Test
    public void testOpen() throws IOException {
        OpenIndexRequest request = new OpenIndexRequest("my_index");
        OpenIndexResponse open = client.indices().open(request, RequestOptions.DEFAULT);
        System.out.println(open.isAcknowledged());
    }
posted @ 2020-06-11 17:27  秋风飒飒吹  阅读(404)  评论(0编辑  收藏  举报