Elasticsearch:在列表中搜索字段 null 或
Elasticsearch: search for field null OR in list
我想在 ElasticSearch 中写这样的东西:
SELECT *
FROM ...
WHERE name IS NULL OR name IN ("a","b","c");
我可以使用以下方式编写 "IS NULL" 部分:
{
"query" :
{
"bool" : {
"must_not": {
"exists": {
"field": "name"
}
}
}
}
}
"IN list"部分:
{
"query" :
{
"bool" : {
"should" : [
{
"terms" : {
"name" : [
"a", "b", "c"
]
}
}
]
}
}
}
但我找不到使用 OR(当然不是 AND)合并这两个查询的方法。
谢谢
您可以使用 bool/should
来结合两者
{
"query": {
"bool": {
"should": [
{
"terms": {
"name": [
"a",
"b",
"c"
]
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "name"
}
}
}
}
]
}
}
}
我想在 ElasticSearch 中写这样的东西:
SELECT *
FROM ...
WHERE name IS NULL OR name IN ("a","b","c");
我可以使用以下方式编写 "IS NULL" 部分:
{
"query" :
{
"bool" : {
"must_not": {
"exists": {
"field": "name"
}
}
}
}
}
"IN list"部分:
{
"query" :
{
"bool" : {
"should" : [
{
"terms" : {
"name" : [
"a", "b", "c"
]
}
}
]
}
}
}
但我找不到使用 OR(当然不是 AND)合并这两个查询的方法。
谢谢
您可以使用 bool/should
来结合两者
{
"query": {
"bool": {
"should": [
{
"terms": {
"name": [
"a",
"b",
"c"
]
}
},
{
"bool": {
"must_not": {
"exists": {
"field": "name"
}
}
}
}
]
}
}
}