1、创建索引:PUT fmmallproductsindex,所有单词要求小写
CreateIndexRequest fmmallProductsIndex = new CreateIndexRequest("fmmallproductsindex"); CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(fmmallProductsIndex, RequestOptions.DEFAULT); System.out.println(createIndexResponse.isAcknowledged());
2、删除索引:DELETE fmmallproductsindex
DeleteIndexRequest index = new DeleteIndexRequest("fmmallproductsindex"); AcknowledgedResponse delete = restHighLevelClient.indices().delete(index, RequestOptions.DEFAULT); System.out.println(delete.isAcknowledged());
3、添加文档:一定要使用实体添加,否则添加字段名不对会导致所有自动添加字段
POST index4/_doc/2 { "bookId": 102, "bookName": "C++程序设计", "author": "谭浩强", "time": 1704623538911 }
Product product = new Product(1, "咪咪虾条", 2.00, "美味的海鲜虾条"); IndexRequest index6 = new IndexRequest("bar"); index6.id(product.getProductId() + ""); index6.source(objectMapper.writeValueAsString(product), XContentType.JSON); IndexResponse index = restHighLevelClient.index(index6, RequestOptions.DEFAULT); System.out.println(index.status().getStatus());
4、批量添加文档:
BulkRequest bulkRequest = new BulkRequest(); Product product = new Product(1, "加丽加虾条", 6.00, "比奥利奥好吃的饼干"); IndexRequest index1 = new IndexRequest("index6"); index1.id(product.getProductId() + ""); index1.source(objectMapper.writeValueAsString(product), XContentType.JSON); bulkRequest.add(index1); Product product2 = new Product(2, "旺旺小饼干", 12.00, "旺旺"); IndexRequest index2 = new IndexRequest("index6"); index2.id(product2.getProductId() + ""); index2.source(objectMapper.writeValueAsString(product2), XContentType.JSON); bulkRequest.add(index2); BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
关于如下结构的实体添加到es,list会会被简单的扁平化为字段名称对应的数组对象结构
@Data @AllArgsConstructor @NoArgsConstructor public class Product4Es { private String productId; private String productName; private List<String> productsImg; private List<ProductSku4Es> productSku4Es; }
如果想存nested结构则需要事先建好索引,或者使用索引模板来创建,才会保存为nested的结构
如下则会创建为nested结构
1、先建索引模板
PUT _template/template_1?create=false&order=0 { "index_patterns": [ "fmmall*", "bar*" ], "settings": { "number_of_shards": 1 }, "order": 0, "mappings": { "properties": { "productId": { "type": "long" }, "productName": { "type": "text" }, "productsImg": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "productSku4Es": { "type": "nested", "properties": { "skuId": { "type": "long" }, "skuName": { "type": "text" }, "sellPrice": { "type": "float" } } } } } }
2、批量添加数据
List<Product4Es> product4Es = productMapper.selectProduct4Es(); BulkRequest bulkRequest = new BulkRequest(); for (Product4Es product4E : product4Es) { IndexRequest index = new IndexRequest("fmmallproductsindex"); index.id(product4E.getProductId() + ""); index.source(objectMapper.writeValueAsString(product4E), XContentType.JSON); bulkRequest.add(index); } BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT); System.out.println(bulk.status().getStatus());
- elasticSearch 结构 nested java APIelasticsearch结构nested java elasticsearch nested elasticsearch java api elasticsearch core nest net elasticsearch nest net 数组elasticsearch nestedquery nested elasticsearch专题api elasticsearch segments api cat elasticsearch plugins api cat elasticsearch management task api