0

有什么方法可以在使用过滤器查询时转换字段的数据类型。我的场景是我有一个带有字段的文档

customData: {
    "contactCustomFieldMapId":xxxx,
    "contactId":xxxxx,
    "customFieldId":45788,
    "value":"1899",
    "fieldInputTypeId":0
},
{
    "contactCustomFieldMapId":xxxx,
    "contactId":xxxxx,
    "customFieldId":45732,
    "value":"Meet me at noon",
    "fieldInputTypeId":0
},
{
    "contactCustomFieldMapId":xxxx,
    "contactId":xxxxx,
    "customFieldId":23233,
    "value":"233589",
    "fieldInputTypeId":0
}

在上面的字段中,value 属性可以是任何数据类型(字符串、数据时间或数字),因为我需要使用范围过滤器(大于、小于)来获取数据。此范围过滤器应与术语过滤器结合使用 bool 过滤器作为

"filter": {
"and": {
  "filters": [
    {
      "bool": {
        "must": [
          {
            "and": {
              "filters": [
                {
                  "term": {
                    "customData.customFieldId": 45788
                  }
                },
                {
                  "range": {
                    "customData.value": {
                      "gt": "1000"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    }
  ]
}

}

不幸的是,查询正在获取 customData.customFieldId 为 45788 的所有记录(与存在过滤器类似)。

有什么方法可以将术语过滤器和范围过滤器结合起来。

4

1 回答 1

0

也许查询格式不正确。我用这个:

 {
   "filtered": {
     "filter": {
       "and": [
         { "term": {
                  "customData.customFieldId": 45788
              }
         },
         { "range": {
                 "customData.value": {
                       "gt": "1000"
                     }
               }
         }
       ]
     }
   }
  }
于 2015-04-03T08:13:11.247 回答