Elastic Search / Elasica php - 或对包含 NULL 的字段的查询不起作用
Elastic Search / Elasica php - OR query on field containing NULL not working
如何只查询 location_id 是 null
或 locations.country_id 在一组给定 ID 中的文档?这是当前查询,但它根本 return 我什么都没有...如果我从查询中删除 location_id 它有效并且 return 至少给我匹配的文档国家/地区 ID。
{
"bool":{
"must":[
{
"bool":{
"must_not":[
{
"exists":{
"field":"location_id"
}
}
],
"must":[
{
"terms":{
"locations.country_id":[
18
]
}
}
]
}
}
]
}
}
在 elasticsearch 中,Must 是 AND 并且 Should 的行为类似于 OR
您的查询转换为 locationId is null AND locations.country_id In [set of ids]。
must需要换成should.
查询:
{
"query": {
"bool": {
"should": [
{
"bool": {
"must_not": [
{
"exists": {
"field": "location_id"
}
}
]
}
},
{
"terms": {
"locations.country_id": [
18
]
}
}
],
"minimum_should_match": 1
}
}
}
如何只查询 location_id 是 null
或 locations.country_id 在一组给定 ID 中的文档?这是当前查询,但它根本 return 我什么都没有...如果我从查询中删除 location_id 它有效并且 return 至少给我匹配的文档国家/地区 ID。
{
"bool":{
"must":[
{
"bool":{
"must_not":[
{
"exists":{
"field":"location_id"
}
}
],
"must":[
{
"terms":{
"locations.country_id":[
18
]
}
}
]
}
}
]
}
}
在 elasticsearch 中,Must 是 AND 并且 Should 的行为类似于 OR 您的查询转换为 locationId is null AND locations.country_id In [set of ids]。 must需要换成should.
查询:
{
"query": {
"bool": {
"should": [
{
"bool": {
"must_not": [
{
"exists": {
"field": "location_id"
}
}
]
}
},
{
"terms": {
"locations.country_id": [
18
]
}
}
],
"minimum_should_match": 1
}
}
}