I have just started to use Elasticsearch and have built a simple integration to the Danish CVR Register where I pull various Client information. All this is working as intended. But now I have to add 2 new objects - 'attributter' and 'deltagerRelation' - both are arrays.They both contain a huge amount of information and I only need 1 element from the deltagerRelation and 2 elements from the 'attributter' object. I'm struggling to create a query that will do this.
This is what I'm trying to achieve - hope this pseudo code makes sense:
From the object 'deltagerRelation':
GET ELEMENT FROM Vrvirksomhed.deltagerRelation WHERE Vrvirksomhed.deltagerRelation.organisationer.hovedtype = 'REVISION' AND Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier.period.gyldigFra IS NOT NULLAND Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier.period.gyldigFra IS NULL
From the object 'attributter':
GET ELEMENT FROM Vrvirksomhed.attributter WHERE Vrvirksomhed.attributter.type IN ('REGNSKABSÅR_SLUT', 'REGNSKABSÅR_START')
This is my current request where I just pull 1 Client. and it's here I want to implement the query. Please not you cannot access the endpoint - you need a key
POST http://distribution.virk.dk/cvr-permanent/virksomhed/_search
{
"_source": [
"Vrvirksomhed.cvrNummer",
"Vrvirksomhed.reklamebeskyttet",
"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn",
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse",
"Vrvirksomhed.virksomhedMetadata.nyesteHovedbranche",
"Vrvirksomhed.virksomhedMetadata.sammensatStatus",
"Vrvirksomhed.deltagerRelation",
"Vrvirksomhed.attributter"
],
"query": {
"term": {
"Vrvirksomhed.cvrNummer": "61126228"
}
}
}
And this is the response - has been shorten for better overview
[
{
"_index": "cvr-v-20220630",
"_type": "_doc",
"_id": "3089460",
"_score": 10.979432,
"_source": {
"Vrvirksomhed": {
"cvrNummer": 61126228,
"deltagerRelation": [
{
"organisationer": [
{
"organisationsNavn": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"navn": "Revision",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"enhedsNummerOrganisation": 4004678075,
"hovedtype": "REVISION",
"medlemsData": [
{
"attributter": [
{
"type": "FUNKTION",
"vaerdier": [
{
"sidstOpdateret": "2015-05-08T08:33:25+02:00",
"vaerdi": "REVISION",
"periode": {
"gyldigFra": "2015-03-18",
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
}
]
}
],
"attributter": [
{
"type": "FUNKTION",
"vaerdier": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"vaerdi": "Revision",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
}
]
}
],
"kontorsteder": [
{
"penhed": {
"navne": [
{
"sidstOpdateret": "2011-10-13T16:32:58+02:00",
"navn": "Deloitte Statsautoriseret Revisionspartnerselskab",
"periode": {
"gyldigFra": "2011-10-13",
"gyldigTil": null
}
}
],
"beliggenhedsadresse": [
{
"vejkode": 8122,
"fritekst": null,
"adresseId": null,
"vejnavn": "Weidekampsgade",
"bogstavTil": null,
"conavn": null,
"bogstavFra": null,
"periode": {
"gyldigFra": "2011-10-13",
"gyldigTil": null
},
"kommune": {
"sidstOpdateret": "2006-11-13T00:00:00+01:00",
"kommuneNavn": "KØBENHAVN",
"kommuneKode": 101,
"periode": {
"gyldigFra": "2007-01-01",
"gyldigTil": null
}
},
"husnummerFra": 6,
"postboks": null,
"sidstOpdateret": "2016-08-23T14:19:38+02:00",
"postnummer": 2300,
"etage": null,
"bynavn": null,
"husnummerTil": null,
"sidedoer": null,
"landekode": "DK",
"sidstValideret": null,
"postdistrikt": "København S"
}
],
"sidstOpdateret": null,
"sidstIndlaest": "2023-11-02T10:31:46.693+01:00",
"adresseOpdateringOphoert": null,
"enhedsNummer": 4003554478,
"adresseHemmelig": null,
"forretningsnoegle": 1017192430,
"adresseHemmeligUndtagelse": null,
"organisationstype": null,
"postadresse": [],
"enhedstype": "PRODUKTIONSENHED"
},
"attributter": [
{
"type": "FUNKTION",
"vaerdier": [
{
"sidstOpdateret": "2015-05-08T08:33:25+02:00",
"vaerdi": "KONTORSTED",
"periode": {
"gyldigFra": "2015-03-18",
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
}
]
}
],
"deltager": {
"navne": [
{
"sidstOpdateret": "2015-03-12T17:58:37+01:00",
"navn": "DELOITTE STATSAUTORISERET REVISIONSPARTNERSELSKAB",
"periode": {
"gyldigFra": "2011-10-13",
"gyldigTil": null
}
}
],
"beliggenhedsadresse": [
{
"vejkode": 8122,
"fritekst": null,
"adresseId": null,
"vejnavn": "Weidekampsgade",
"bogstavTil": null,
"conavn": null,
"bogstavFra": null,
"periode": {
"gyldigFra": "2011-10-13",
"gyldigTil": null
},
"kommune": {
"sidstOpdateret": "2006-11-13T00:00:00+01:00",
"kommuneNavn": "KØBENHAVN",
"kommuneKode": 101,
"periode": {
"gyldigFra": "2007-01-01",
"gyldigTil": null
}
},
"husnummerFra": 6,
"postboks": null,
"sidstOpdateret": "2013-11-22T22:40:23+01:00",
"postnummer": 2300,
"etage": null,
"bynavn": null,
"husnummerTil": null,
"sidedoer": null,
"landekode": "DK",
"sidstValideret": null,
"postdistrikt": "København S"
}
],
"sidstOpdateret": "2023-11-01T08:53:28+01:00",
"sidstIndlaest": "2023-11-02T10:31:46.693+01:00",
"adresseOpdateringOphoert": null,
"enhedsNummer": 5651072,
"adresseHemmelig": null,
"forretningsnoegle": 33963556,
"adresseHemmeligUndtagelse": null,
"organisationstype": null,
"postadresse": [],
"enhedstype": "VIRKSOMHED"
}
},
{
"organisationer": [
{
"organisationsNavn": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"navn": "Bestyrelse",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"enhedsNummerOrganisation": 4004678073,
"hovedtype": "LEDELSESORGAN",
"medlemsData": [
{
"attributter": [
{
"type": "FUNKTION",
"vaerdier": [
{
"sidstOpdateret": "2022-03-25T11:12:29+01:00",
"vaerdi": "BESTYRELSESMEDLEM",
"periode": {
"gyldigFra": "2022-03-17",
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
},
{
"type": "VALGFORM",
"vaerdier": [
{
"sidstOpdateret": "2022-03-25T11:12:29+01:00",
"vaerdi": "medarbejdere i selskabet",
"periode": {
"gyldigFra": "2022-03-17",
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
}
]
}
],
"attributter": [
{
"type": "FUNKTION",
"vaerdier": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"vaerdi": "Bestyrelse",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
}
]
}
],
"kontorsteder": [],
"deltager": {
"navne": [
{
"sidstOpdateret": null,
"navn": "Aleksandras Cicasovas",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"beliggenhedsadresse": [
{
"vejkode": null,
"fritekst": "Linkmenų Gatvė 33-11\n08217 Vilnius",
"adresseId": null,
"vejnavn": null,
"bogstavTil": null,
"conavn": null,
"bogstavFra": null,
"periode": {
"gyldigFra": "2022-06-17",
"gyldigTil": null
},
"kommune": null,
"husnummerFra": null,
"postboks": null,
"sidstOpdateret": "2022-06-16T23:53:17Z",
"postnummer": null,
"etage": null,
"bynavn": null,
"husnummerTil": null,
"sidedoer": null,
"landekode": "LT",
"sidstValideret": null,
"postdistrikt": null
}
],
"sidstOpdateret": "2022-06-18T00:03:23.732+02:00",
"sidstIndlaest": "2023-11-02T10:31:46.693+01:00",
"adresseOpdateringOphoert": false,
"enhedsNummer": 4009216850,
"adresseHemmelig": false,
"forretningsnoegle": 4009216850,
"adresseHemmeligUndtagelse": false,
"organisationstype": null,
"postadresse": [],
"enhedstype": "ANDEN_DELTAGER"
}
},
{
"organisationer": [
{
"organisationsNavn": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"navn": "Direktion",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"enhedsNummerOrganisation": 4004678074,
"hovedtype": "LEDELSESORGAN",
"medlemsData": [
{
"attributter": [
{
"type": "FUNKTION",
"vaerdier": [
{
"sidstOpdateret": "2022-05-04T12:15:58+02:00",
"vaerdi": "DIREKTØR",
"periode": {
"gyldigFra": "2022-05-01",
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
}
]
}
],
"attributter": [
{
"type": "FUNKTION",
"vaerdier": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"vaerdi": "Direktion",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
}
]
}
],
"kontorsteder": [],
"deltager": {
"navne": [
{
"sidstOpdateret": null,
"navn": "Barbro Johanna Gunnarsdotter Norberg",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"beliggenhedsadresse": [
{
"vejkode": null,
"fritekst": "Kommendörsgatan 44\n11458 Stockholm",
"adresseId": null,
"vejnavn": null,
"bogstavTil": null,
"conavn": null,
"bogstavFra": null,
"periode": {
"gyldigFra": "2022-06-17",
"gyldigTil": null
},
"kommune": null,
"husnummerFra": null,
"postboks": null,
"sidstOpdateret": "2022-06-16T23:34:56Z",
"postnummer": null,
"etage": null,
"bynavn": null,
"husnummerTil": null,
"sidedoer": null,
"landekode": "SE",
"sidstValideret": null,
"postdistrikt": null
}
],
"sidstOpdateret": "2022-06-18T00:04:26.092+02:00",
"sidstIndlaest": "2023-11-02T10:31:46.693+01:00",
"adresseOpdateringOphoert": false,
"enhedsNummer": 4009254383,
"adresseHemmelig": false,
"forretningsnoegle": 4009254383,
"adresseHemmeligUndtagelse": false,
"organisationstype": null,
"postadresse": [],
"enhedstype": "ANDEN_DELTAGER"
}
}
],
"reklamebeskyttet": true,
"attributter": [
{
"type": "ARKIV_REGISTRERINGSNUMMER",
"vaerdier": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"vaerdi": "A/S28472",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "string"
},
{
"type": "BØRSNOTERET",
"vaerdier": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"vaerdi": "true",
"periode": {
"gyldigFra": "2005-01-01",
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "boolean"
},
{
"type": "REGNSKABSÅR_SLUT",
"vaerdier": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"vaerdi": "--12-31",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "gMonthDay"
},
{
"type": "REGNSKABSÅR_START",
"vaerdier": [
{
"sidstOpdateret": "2015-02-10T00:00:00+01:00",
"vaerdi": "--01-01",
"periode": {
"gyldigFra": null,
"gyldigTil": null
}
}
],
"sekvensnr": 0,
"vaerditype": "gMonthDay"
}
],
"virksomhedMetadata": {
"nyesteHovedbranche": {
"sidstOpdateret": "2007-12-25T09:45:25+01:00",
"branchetekst": "Banker, sparekasser og andelskasser",
"branchekode": "641900",
"periode": {
"gyldigFra": "2008-01-01",
"gyldigTil": null
}
},
"sammensatStatus": "NORMAL",
"nyesteNavn": {
"navn": "DANSKE BANK A/S"
},
"nyesteBeliggenhedsadresse": {
"vejkode": 2992,
"fritekst": null,
"adresseId": "ccfb6ead-f39e-4438-8a9f-22b2b3d0b202",
"vejnavn": "Holmens Kanal",
"bogstavTil": null,
"conavn": null,
"bogstavFra": null,
"periode": {
"gyldigFra": "2007-01-10",
"gyldigTil": null
},
"kommune": {
"sidstOpdateret": "2006-11-13T00:00:00+01:00",
"kommuneNavn": "KØBENHAVN",
"kommuneKode": 101,
"periode": {
"gyldigFra": "2007-01-01",
"gyldigTil": null
}
},
"husnummerFra": 2,
"postboks": null,
"sidstOpdateret": "2007-01-10T18:12:10+01:00",
"postnummer": 1060,
"etage": null,
"bynavn": null,
"husnummerTil": 12,
"sidedoer": null,
"landekode": "DK",
"sidstValideret": "2017-10-09T09:38:54.228+02:00",
"postdistrikt": "København K"
}
}
}
}
}
]
UPDATE:
I found out that I was querying the wrong field. So I changed the query from @imotov to this. And it seemed to do what I want.
{
"_source": [
"Vrvirksomhed.cvrNummer",
"Vrvirksomhed.reklamebeskyttet",
"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn",
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse",
"Vrvirksomhed.virksomhedMetadata.nyesteHovedbranche",
"Vrvirksomhed.virksomhedMetadata.sammensatStatus"
],
"query": {
"bool": {
"must": [
{
"term": {
"Vrvirksomhed.cvrNummer": "61126228"
}
},
{
"nested": {
"inner_hits": {},
"path": "Vrvirksomhed.deltagerRelation",
"query": {
"nested": {
"path": "Vrvirksomhed.deltagerRelation.organisationer",
"query": {
"nested": {
"path": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData",
"query": {
"nested": {
"path": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter",
"query": {
"nested": {
"path": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier",
"query": {
"bool": {
"must": [
{
"match": {
"Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier.vaerdi": "REVISION"
}
},
{
"nested": {
"bool": {
"must": [
{
"exists": {
"field": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier.periode.gyldigFra"
}
}
],
"must_not": [
{
"exists": {
"field": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier.periode.gyldigTil"
}
}
]
}
}
}
]
}
}
}
}
}
}
}
}
}
}
}
},
{
"nested": {
"inner_hits": {},
"path": "Vrvirksomhed.attributter",
"query": {
"bool": {
"should": [
{
"match": {
"Vrvirksomhed.attributter.type": "REGNSKABSÅR_SLUT"
}
},
{
"match": {
"Vrvirksomhed.attributter.type": "REGNSKABSÅR_START"
}
}
]
}
}
}
}
]
}
}
}
I have to admit, it has been a while since I saw such a terrifying mapping. Here is the query:
{
"_source": [
"Vrvirksomhed.cvrNummer",
"Vrvirksomhed.reklamebeskyttet",
"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn",
"Vrvirksomhed.virksomhedMetadata.nyesteBeliggenhedsadresse",
"Vrvirksomhed.virksomhedMetadata.nyesteHovedbranche",
"Vrvirksomhed.virksomhedMetadata.sammensatStatus"
],
"query": {
"bool": {
"must": [
{
"term": {
"Vrvirksomhed.cvrNummer": "61126228"
}
},
{
"nested": {
"inner_hits": {},
"path": "Vrvirksomhed.deltagerRelation",
"query": {
"nested": {
"path": "Vrvirksomhed.deltagerRelation.organisationer",
"query": {
"bool": {
"must": [
{
"match": {
"Vrvirksomhed.deltagerRelation.organisationer.hovedtype": "REVISION"
}
},
{
"nested": {
"path": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData",
"query": {
"nested": {
"path": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter",
"query": {
"nested": {
"path": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier",
"query": {
"bool": {
"must": [
{
"exists": {
"field": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier.periode.gyldigFra"
}
}
],
"must_not": [
{
"exists": {
"field": "Vrvirksomhed.deltagerRelation.organisationer.medlemsData.attributter.vaerdier.periode.gyldigTil"
}
}
]
}
}
}
}
}
}
}
}
]
}
}
}
}
}
},
{
"nested": {
"inner_hits": {},
"path": "Vrvirksomhed.attributter",
"query": {
"bool": {
"should": [
{
"match": {
"Vrvirksomhed.attributter.type": "REGNSKABSÅR_SLUT"
}
},
{
"match": {
"Vrvirksomhed.attributter.type": "REGNSKABSÅR_START"
}
}
]
}
}
}
}
]
}
}
}