elasticsearch_dsl 的nested
在工作中会碰到这样的一个需求,mapping中定义的类型是nested
{ "judgement":{ "mappings":{ "content":{ "_all":{ "enabled":false }, "_routing":{ "required":true }, "properties":{ "fullJudgement":{ "properties":{ "caseNumber":{ "type":"text", "index":false, "store":true, "norms":false }, "caseType":{ "type":"keyword", "index":false, "doc_values":false }, "court":{ "type":"keyword", "index":false, "store":true, "doc_values":false }, "courtHierarchy":{ "properties":{ "level1":{ "type":"keyword", "index":false, "eager_global_ordinals":true }, "level2":{ "type":"keyword", "index":false, "eager_global_ordinals":true } } }, "courtList":{ "type":"keyword", "doc_values":false }, "courtOpinion":{ "type":"text", "index":false, "store":true, "norms":false }, "fullCourt":{ "type":"keyword", "index":false, "store":true }, "hasHistoricalJudgement":{ "type":"boolean", "index":false, "store":true, "doc_values":false }, "hasSimilarJudgement":{ "type":"boolean", "index":false, "store":true, "doc_values":false }, "historicalJudgementTimeLines":{ "type":"nested", "properties":{ "historicalJudgements":{ "type":"nested", "properties":{ "caseNumber":{ "type":"keyword", "index":false, "doc_values":false }, "courtName":{ "type":"keyword", "index":false, "doc_values":false }, "isCurrentJudgement":{ "type":"boolean", "index":false, "doc_values":false }, "isRecorded":{ "type":"boolean", "index":false, "doc_values":false }, "judgementDate":{ "type":"date", "index":false, "ignore_malformed":true, "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }, "judgementId":{ "type":"keyword", "index":false, "doc_values":false }, "judgementType":{ "type":"keyword", "index":false, "doc_values":false }, "title":{ "type":"text", "index":false, "norms":false }, "trialRound":{ "type":"short", "index":false, "doc_values":false, "coerce":true } } }, "judgementDate":{ "type":"date", "index":false, "ignore_malformed":true, "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } }, "id":{ "type":"keyword", "store":true, "doc_values":false }, "judgementAbstract":{ "type":"text", "index":false, "norms":false }, "judgementContent":{ "type":"text", "norms":false, "analyzer":"ik_max_word" }, "judgementDate":{ "type":"date", "store":true, "ignore_malformed":true, "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }, "judgementType":{ "type":"keyword", "store":true, "eager_global_ordinals":true }, "judgementTypeText":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } }, "judges":{ "type":"keyword", "doc_values":false }, "keywords":{ "type":"keyword", "store":true, "eager_global_ordinals":true }, "opponentLawyers":{ "type":"nested", "properties":{ "avatarUrl":{ "type":"keyword", "index":false, "doc_values":false }, "claimProfileId":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } }, "claimUserId":{ "type":"keyword", "index":false, "doc_values":false }, "isClaimed":{ "type":"boolean", "index":false, "doc_values":false }, "lawFirm":{ "type":"keyword", "doc_values":false }, "name":{ "type":"keyword", "doc_values":false }, "originalLawFirm":{ "type":"keyword", "index":false, "doc_values":false }, "originalLawyerName":{ "type":"keyword", "index":false, "doc_values":false }, "profileId":{ "type":"keyword", "index":false, "doc_values":false }, "status":{ "type":"short", "index":false, "doc_values":false } } }, "opponents":{ "type":"keyword", "doc_values":false }, "otherLawyers":{ "type":"nested", "properties":{ "avatarUrl":{ "type":"keyword", "index":false, "doc_values":false }, "claimProfileId":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } }, "claimUserId":{ "type":"keyword", "index":false, "doc_values":false }, "isClaimed":{ "type":"boolean", "index":false, "doc_values":false }, "lawFirm":{ "type":"keyword", "doc_values":false }, "name":{ "type":"keyword", "doc_values":false }, "originalLawFirm":{ "type":"keyword", "index":false, "doc_values":false }, "originalLawyerName":{ "type":"keyword", "index":false, "doc_values":false }, "profileId":{ "type":"keyword", "index":false, "doc_values":false }, "status":{ "type":"short", "index":false, "doc_values":false } } }, "paragraphs":{ "type":"nested", "properties":{ "subParagraphs":{ "type":"nested", "properties":{ "number":{ "type":"short", "index":false, "doc_values":false, "coerce":true }, "text":{ "type":"text", "index":false, "norms":false } } }, "type":{ "type":"short", "index":false, "doc_values":false, "coerce":true }, "typeText":{ "type":"keyword", "doc_values":false } } }, "proponentLawyers":{ "type":"nested", "properties":{ "avatarUrl":{ "type":"keyword", "index":false, "doc_values":false }, "claimProfileId":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } }, "claimUserId":{ "type":"keyword", "index":false, "doc_values":false }, "isClaimed":{ "type":"boolean", "index":false, "doc_values":false }, "lawFirm":{ "type":"keyword", "doc_values":false }, "name":{ "type":"keyword", "doc_values":false }, "originalLawFirm":{ "type":"keyword", "index":false, "doc_values":false }, "originalLawyerName":{ "type":"keyword", "index":false, "doc_values":false }, "profileId":{ "type":"keyword", "index":false, "doc_values":false }, "status":{ "type":"short", "index":false, "doc_values":false } } }, "proponents":{ "type":"keyword", "doc_values":false }, "publishBatch":{ "type":"text", "index":false, "norms":false }, "publishDate":{ "type":"date", "index":false, "doc_values":false, "ignore_malformed":true, "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" }, "publishType":{ "type":"keyword", "index":false }, "publishTypeHierarchy":{ "properties":{ "level1":{ "type":"keyword", "index":false, "eager_global_ordinals":true }, "level2":{ "type":"keyword", "index":false, "eager_global_ordinals":true } } }, "publishTypeList":{ "type":"keyword", "doc_values":false }, "publishTypeText":{ "type":"keyword", "index":false, "store":true, "doc_values":false }, "reason":{ "type":"keyword", "index":false, "doc_values":false }, "reasonHierarchy":{ "properties":{ "level1":{ "type":"keyword", "index":false, "eager_global_ordinals":true }, "level2":{ "type":"keyword", "index":false, "eager_global_ordinals":true }, "level3":{ "type":"keyword", "index":false, "eager_global_ordinals":true }, "level4":{ "type":"keyword", "index":false, "eager_global_ordinals":true }, "level5":{ "type":"keyword", "index":false, "eager_global_ordinals":true } } }, "reasonList":{ "type":"keyword", "doc_values":false }, "regionHierarchy":{ "properties":{ "level1":{ "type":"keyword", "index":false, "eager_global_ordinals":true }, "level2":{ "type":"keyword", "index":false, "eager_global_ordinals":true }, "level3":{ "type":"keyword", "index":false, "eager_global_ordinals":true } } }, "regionList":{ "type":"keyword", "doc_values":false }, "regulationGroupByTrialRoundInfos":{ "type":"nested", "properties":{ "regulations":{ "type":"nested", "properties":{ "id":{ "type":"keyword", "doc_values":false }, "sectionParagraphs":{ "type":"nested", "properties":{ "isHit":{ "type":"boolean", "index":false, "doc_values":false }, "text":{ "type":"text", "index":false, "norms":false }, "type":{ "type":"short", "index":false, "doc_values":false, "coerce":true } } }, "text":{ "type":"keyword", "doc_values":false } } }, "trialRound":{ "type":"long" }, "trialRoundText":{ "type":"keyword", "index":false, "doc_values":false } } }, "similarJudgement":{ "properties":{ "attitude":{ "type":"short", "index":false, "doc_values":false, "coerce":true }, "court":{ "type":"keyword", "index":false, "doc_values":false }, "id":{ "type":"keyword", "index":false, "doc_values":false }, "score":{ "type":"keyword", "index":false, "doc_values":false }, "similarLevel":{ "type":"short", "index":false, "doc_values":false, "coerce":true }, "title":{ "type":"text", "index":false, "norms":false } } }, "sourceName":{ "type":"keyword", "index":false, "doc_values":false }, "sourceType":{ "type":"short", "index":false, "doc_values":false, "coerce":true }, "sourceUrl":{ "type":"keyword", "index":false, "doc_values":false }, "title":{ "type":"text", "store":true, "analyzer":"ik_max_word" }, "trialRound":{ "type":"short", "index":false, "doc_values":false, "coerce":true }, "trialRoundText":{ "type":"keyword", "eager_global_ordinals":true }, "trialYear":{ "type":"keyword", "eager_global_ordinals":true } } }, "originalUUID":{ "type":"keyword", "doc_values":false }, "originalUuid":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } } } }
如果想要对fullJudgement.opponentLawyers.name查询二次就需要下面的查询语句
q = Q('nested', path='fullJudgement.opponentLawyers', query=Q('term', **{'fullJudgement.opponentLawyers.name': '王美丽'}) & Q('term', **{'fullJudgement.opponentLawyers.name': '王美'})) ms = Search(using=client, index='judgement', doc_type='content').query(q)