//注入client
@Autowired RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost",9200,"http")));
//创建索引
public void createFCIndex() throws IOException {
Settings.Builder settings = Settings.builder();
settings.put("number_of_shards",5);
settings.put("number_of_replicas",1);
XContentBuilder mapping = JsonXContent.contentBuilder()
.startObject()
.startObject("properties")
.startObject("cancelSerialNo")
.field("type", "keyword")
.endObject()
.startObject("settleBillNo")
.field("type", "keyword")
.endObject()
.startObject("settleBillSubNo")
.field("type", "keyword")
.endObject()
.startObject("stockNo")
.field("type", "keyword")
.endObject()
.startObject("stockSubNo")
.field("type", "keyword")
.endObject()
.startObject("orderNo")
.field("type", "keyword")
.endObject()
.startObject("orderSubNo")
.field("type", "keyword")
.endObject()
.startObject("invoiceNo")
.field("type", "keyword")
.endObject()
.startObject("invoiceCode")
.field("type", "keyword")
.endObject()
.startObject("amount")
.field("type", "keyword")
.endObject()
.startObject("systemId")
.field("type", "keyword")
.endObject()
.startObject("invoiceWt")
.field("type", "keyword")
.endObject()
.startObject("unitPrice")
.field("type", "keyword")
.endObject()
.startObject("parent_child_relation")
.field("type", "join")
.startObject("relations")
.field("parent", new String[]{"child"})
.endObject()
.endObject()
.endObject()
.endObject();
CreateIndexRequest request = new CreateIndexRequest("settle_wip_detail_index");
request.mapping(mapping).settings(settings);
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println("创建父子文档索引成功");
}
//导入父文档
public void parentDate() throws IOException {
JSonObject jsonObject = new JSonObject();
jsonObject.put("cancelSerialNo","1");
jsonObject.put("settleBillNo","2");
jsonObject.put("settleBillSubNo","3");
jsonObject.put("stockNo","4");
jsonObject.put("stockSubNo","5");
jsonObject.put("orderNo","6");
jsonObject.put("orderSubNo","7");
jsonObject.put("invoiceNo","8");
jsonObject.put("invoiceCode","9");
jsonObject.put("amount","9");
jsonObject.put("systemId","1");
JSonObject relationObject = new JSonObject();
relationObject.put("name","parent");
jsonObject.put("parent_child_relation",relationObject);
IndexRequest request = new IndexRequest("settle_wip_detail_index").id("parent1")
.source(jsonObject.toString(), XContentType.JSON);
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
System.out.println("插入父文档成功");
}
//导入子文档
public void childDate() throws IOException {
JSonObject jsonObject = new JSonObject();
jsonObject.put("cancelSerialNo","11");
jsonObject.put("settleBillNo","21");
jsonObject.put("settleBillSubNo","31");
jsonObject.put("stockNo","41");
jsonObject.put("stockSubNo","51");
jsonObject.put("orderNo","61");
jsonObject.put("orderSubNo","71");
jsonObject.put("invoiceNo","81");
jsonObject.put("invoiceCode","91");
jsonObject.put("amount","91");
jsonObject.put("systemId","11");
JSonObject relationObject = new JSonObject();
relationObject.put("name","child");
relationObject.put("parent","parent1");
jsonObject.put("parent_child_relation",relationObject);
IndexRequest request = new IndexRequest("settle_wip_detail_index").id("child1")
.source(jsonObject.toString(), XContentType.JSON)
.routing("parent1");
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
System.out.println("插入子文档成功");
}
其中cancelSerialNo,settleBillNo等为字段名;parent和child为关系身份名;parent1与child1为_id