我正在嘗試對 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
}
}
}
}
uj5u.com熱心網友回復:
您需要使用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"
}
}
]
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/473329.html
標籤:弹性搜索
上一篇:將陣列中的兩個重復值轉換為字串
