在 Elasticsearch 中使用 not 过滤器

Using `not` filter in Elasticsearch

我在 ElasticSearch 中有以下查询。我正在尝试过滤掉字段 message_class 等于 'SE'.

的文档

我提到了 this SO Q&A,但下面的查询仍然 returns 字段 message_class 等于 'SE' 的文档。

not 过滤器的正确使用方法是什么?

POST _search
{  
   "query":{  
      "filtered":{  
         "filter":{  
            "not":{  
               "term":{  
                  "message_class":"SE"
               }
            }
         }
      }
   }
}

字段 message_class_mapping 显示:

    "message_class" : {
      "full_name" : "message_class", "mapping" : {"message_class":{"type":"string"}}
    }

由于您使用的是术语 查询 ,分析器未应用于您的查询。假设应用了小写过滤器,以下应该可以正常工作 -

POST _search
{  
   "query":{  
      "filtered":{  
         "filter":{  
            "not":{  
               "term":{  
                  "message_class":"se"
               }
            }
         }
      }
   }
}