elasticsearch>从查询结果中消除空值的问题

时间:2014-11-16 10:59:27

标签: elasticsearch null wildcard

我正在从elasticsearch索引中获取数据。 我想过滤掉某些列中包含null或空字符串值的文档。 然而,当我使用"缺少"或者"存在"方法我遇到了一些关于值的问题=""因为它们没有过滤掉并显示在结果中

我想过使用通配符,但是当处理ID中有多个单词的列时,它没有给出任何结果(例如:警报描述,警报ID,等等)

使用elasticsearch-1.3.2

我的代码缺少/存在:

{
   "query" : {
      "constant_score" : {
         "filter" : {
            "exists" : {
               "field" : "myfield"
            }
         }
      }
   }
}

我的代码带有通配符:

{
    query: {
     bool: {
     must: [
{
    constant_score: {
     filter: {
      missing: {
     field: trap_message.enterprise
}
}
}
}
]
     must_not: [ ]
     should: [ ]
}
}
     from: 0
     size: 10
     sort: [ ]
     facets: { }
}

2 个答案:

答案 0 :(得分:0)

我会将exists过滤器与must_not结合起来。以下是搜索字段“authResult.address.state”

的示例
GET index1/type1/_search
{
  "size": 10,
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "bool": {
          "must": [
            {
              "exists": {
                 "field": "authResult.address.state"
              }          
            }
          ],
          "must_not": [
             {
                 "term": {
                    "authResult.address.state": ""
                 }
             }
          ]          
        }
      }
    }
  }
}

答案 1 :(得分:0)

当我从GET切换到POST

时,它有效