elasticsearch nested嵌套查询

本文详细介绍了Elasticsearch中嵌套对象的查询方法,包括使用filter与term进行精确匹配的不计分查询实例。通过具体的DSL语句,展示了如何在嵌套对象中实现高效的查询操作。

关于es查询dsl的filter与must,term与match的区别

关于es查询dsl的filter与must,term与match的区别_PacosonSWJTU的博客-CSDN博客_es must和filter

嵌套对象查询

嵌套对象查询 | Elasticsearch: 权威指南 | Elastic

多条件嵌套查询:elasticSearch多条件高级检索语句,包含多个must、must_not、should嵌套示例,并考虑nested对象的特殊检索 - 近朱朱者赤 - 博客园

创建索引

put localhost:9200/pdi_cust , 注意 PUB_CUST_LABEL 字段分词了。 es7 不支持type ,所以 无需指定type。

{   
    "mappings"  :{      
        "properties":{
            "RCRD_ID":{
                "type":"keyword"
            }
            , "BUSI_CODE":{
                "type":"keyword"
            }
            , "STATE":{
                "type":"keyword"
            }
            , "LOANS":{
                "type":"nested"
                , "properties" :{
                    "LOAN_NUM":{
                        "type":"keyword"
                    }
                    , "PUB_CUST_LABEL":{
                        "type":"text"
                    }
                    , "DATA_SRC":{
                        "type":"keyword"
                    }
                    , "CUST_NUM": {
                        "type":"keyword"
                    }
                    , "LOAN_BAL_SUM":{
                        "type":"double"
                    }
                    , "OVD_MONEY_SUM": {
                        "type": "double"
                    }
                }
            }
        }
    }       
}

嵌套查询

使用 filter+term实现精确匹配不计分查询

// dsl 
{
	"_source":["RCRD_ID", "STATE", "BUSI_CODE"]
	, "query":{
		"bool":{
			"filter":[
				{
					"term":{
						"STATE":"PDOS"
					}				
				} 
				, {
					"nested":{
						"path":"LOANS"
						, "query":{
							"bool":{
								"filter":[
									{
										"term": {
											"LOANS.LOAN_NUM": "LOAN_NUM_01"
										}
									}
								]								
							}
						}
						,  "inner_hits": {                            
                        }
					}				
				}
			]
		}					
	}
}

// 查询结果
{
    "took": 8,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 0.0,
        "hits": [
            {
                "_index": "pdi_cust",
                "_type": "_doc",
                "_id": "tr_rd_01",
                "_score": 0.0,
                "_source": {
                    "RCRD_ID": "tr_rd_01",
                    "STATE": "PDOS",
                    "BUSI_CODE": "pdi"
                },
                "inner_hits": {
                    "LOANS": {
                        "hits": {
                            "total": {
                                "value": 1,
                                "relation": "eq"
                            },
                            "max_score": 0.0,
                            "hits": [
                                {
                                    "_index": "pdi_cust",
                                    "_type": "_doc",
                                    "_id": "tr_rd_01",
                                    "_nested": {
                                        "field": "LOANS",
                                        "offset": 0
                                    },
                                    "_score": 0.0,
                                    "_source": {
                                        "CUST_NUM": "CUST_NUM_01",
                                        "DATA_SRC": "VALD",
                                        "LOAN_BAL_SUM": "1111",
                                        "LOAN_NUM": "LOAN_NUM_01",
                                        "OVD_MONEY_SUM": "1111",
                                        "PUB_CUST_LABEL": "张三 李四  王五"
                                    }
                                }
                            ]
                        }
                    }
                }
            }
        ]
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值