ElasticSearch嵌套查询以及注意事项

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

}

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

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值