es实体
@Data
@Document(indexName = "indexdemo", type = "typedemo", shards = 3, replicas = 1)
public class TmsWaybillEsEntity {
/**
* 主键id
*/
@Id
private Long id;
private String waybillNo;
private String orderNo;
private Long orderId;
@Field(type = FieldType.Nested)
private List<TmsWaybillDispatcherInfoEsEntity> dispatcherBills;
}
@Data
public class TmsWaybillDispatcherInfoEsEntity {
private Long dispatcherBillId;
private String dispatcherBillNo;
private Byte waybillType;
private String snapDriverName;
private String snapDriverPhone;
private String snapTruckPlateNumber;
}
创建索引和映射
public void createWaybillIndex(){
if(waybillEsTemplate.indexExists(TmsWaybillEsEntity.class)){
log.info("运单索引已经存在,无需创建");
}else{
boolean createResult = waybillEsTemplate.createIndex(TmsWaybillEsEntity.class);
waybillEsTemplate.putMapping(TmsWaybillEsEntity.class);
waybillEsTemplate.refresh(TmsWaybillEsEntity.class);
log.info("创建运单索引的结果:{}", createResult);
}
}
嵌套查询,kibana --> Dev Tools
GET /indexdemo/typedemo/_search
{
"query": {
"bool": {
"must": [{
"term": {
"companyId": {
"value": 965006065496327513,
"boost": 1.0
}
}
},
{
"nested": {
"query": {
"bool": {
"must": [{
"wildcard": {
"dispatcherBills.dispatcherBillNo.keyword": {
"value": "*P101454019050700013*",
"boost": 1.0
}
}
}],
"disable_coord": false,
"adjust_pure_negative": true,
"boost": 1.0
}
},
"path": "dispatcherBills",
"score_mode": "max",
"ignore_unmapped": false,
"boost": 1.0
}
},
{
"nested": {
"query": {
"bool": {
"must": [{
"term": {
"dispatcherBills.snapDriverName.keyword": {
"value": "smxc",
"boost": 1.0
}
}
}],
"disable_coord": false,
"adjust_pure_negative": true,
"boost": 1.0
}
},
"path": "dispatcherBills",
"score_mode": "max",
"ignore_unmapped": false,
"boost": 1.0
}
}
],
"disable_coord": false,
"adjust_pure_negative": true,
"boost": 1.0
}
}
}
注意事项, 分片数量和副本数量要和运维的同事配置的一致。