Elasticsearch - 我如何搜索 2 个字段。 1 必须为空,其他必须匹配搜索文本
Elasticsearch - How do i search on 2 fields. 1 must be null and other must match search text
我正在尝试在 elasticsearch 6.8 上进行搜索。
我无法控制弹性搜索实例,这意味着我无法控制数据的索引方式。
当我进行匹配时,我的数据结构是这样的。所有搜索:
{ "took": 4,
"timed_out": false,
"_shards": {
"total": 13,
"successful": 13,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 15.703552,
"hits": [ {
"_index": "(removed index)",
"_type": "_doc",
"_id": "******** (Removed id)",
"_score": 15.703552,
"_source": {
"VCompany": {
"cvrNummer": 12345678,
"penheder": [
{
"pNummer": 1234567898,
"periode": {
"gyldigFra": "2013-04-10",
"gyldigTil": "2014-09-30"
}
}
],
"vMetadata": {
"nyesteNavn": {
"navn": "company1",
"periode": {
"gyldigFra": "2013-04-10",
"gyldigTil": "2014-09-30"
}
},
}
}
}
}
}]
json 可能不完整,因为我删除了一些不需要的数据。所以我想做的是搜索哪里:“vCompany.vMetaData.nyesteNavn.gyldigTil”为空,哪里“vCompany.vMetaData.nyesteNavn.navn”将匹配文本字符串。
我试过这样的事情:
{
"query": {
"bool": {
"must": [
{"match": {"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn": "company1"}}
],
"should": {
"terms": {
"Vrvirksomhed.penheder.periode.gyldigTil": null
}
}
}
}
您需要使用 must_not
和 exists
查询,如下所示,以检查字段是否为 null
。下面的查询将给出 company1
匹配且 Vrvirksomhed.penheder.periode.gyldigTil
字段为空的结果。
{
"query": {
"bool": {
"must": [
{
"match": {
"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn": "company1"
}
}
],
"must_not": [
{
"exists": {
"field": "Vrvirksomhed.penheder.periode.gyldigTil"
}
}
]
}
}
}
我正在尝试在 elasticsearch 6.8 上进行搜索。 我无法控制弹性搜索实例,这意味着我无法控制数据的索引方式。
当我进行匹配时,我的数据结构是这样的。所有搜索:
{ "took": 4,
"timed_out": false,
"_shards": {
"total": 13,
"successful": 13,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 15.703552,
"hits": [ {
"_index": "(removed index)",
"_type": "_doc",
"_id": "******** (Removed id)",
"_score": 15.703552,
"_source": {
"VCompany": {
"cvrNummer": 12345678,
"penheder": [
{
"pNummer": 1234567898,
"periode": {
"gyldigFra": "2013-04-10",
"gyldigTil": "2014-09-30"
}
}
],
"vMetadata": {
"nyesteNavn": {
"navn": "company1",
"periode": {
"gyldigFra": "2013-04-10",
"gyldigTil": "2014-09-30"
}
},
}
}
}
}
}]
json 可能不完整,因为我删除了一些不需要的数据。所以我想做的是搜索哪里:“vCompany.vMetaData.nyesteNavn.gyldigTil”为空,哪里“vCompany.vMetaData.nyesteNavn.navn”将匹配文本字符串。
我试过这样的事情:
{
"query": {
"bool": {
"must": [
{"match": {"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn": "company1"}}
],
"should": {
"terms": {
"Vrvirksomhed.penheder.periode.gyldigTil": null
}
}
}
}
您需要使用 must_not
和 exists
查询,如下所示,以检查字段是否为 null
。下面的查询将给出 company1
匹配且 Vrvirksomhed.penheder.periode.gyldigTil
字段为空的结果。
{
"query": {
"bool": {
"must": [
{
"match": {
"Vrvirksomhed.virksomhedMetadata.nyesteNavn.navn": "company1"
}
}
],
"must_not": [
{
"exists": {
"field": "Vrvirksomhed.penheder.periode.gyldigTil"
}
}
]
}
}
}