ElasticSearch嵌套查询以及注意事项

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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 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
		}
	}

}

注意事项, 分片数量和副本数量要和运维的同事配置的一致。

 

转载于:https://my.oschina.net/garlicts/blog/3053377

你可能感兴趣的:(ElasticSearch嵌套查询以及注意事项)