在elasticsearch中搜索其值为NULL或任何特定值的字段

时间:2018-02-01 12:54:25

标签: elasticsearch search null

我想在elasticsearch中编写一个查询,在字段中搜索空值和任何特定值, 我看了这个链接:null_values

并发现对于其类型为boolean或long的字段,它们的默认值为null,但是如何判断弹性在长字段中搜索具有值或null:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == MY_LOCATION_REQUEST_CODE) {
      if (permissions.length == 1 &&
          permissions[0] == Manifest.permission.ACCESS_FINE_LOCATION &&
          grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        mMap.setMyLocationEnabled(true);
    } else {
      // Permission was denied. Display an error message.
    }
}

现在我这样查询

field == null OR field == [1,2,3,4,]

它让我错误错误请求..

你可以帮我写一下我的查询吗? 感谢

1 个答案:

答案 0 :(得分:1)

您需要使用exists查询检查字段是否存在。

在查询字符串语法中,它是这样的:

NOT(_exists_:field) OR field == [1,2,3,4,]

在查询DSL中,它是这样的:

'should' => [
  [
    'bool' => [ 'must_not' => [ 'exists' => [ 'field' => 'field' ] ] ]
  ],
  [
    'terms' => ['field' => [1, 2, 3, 4, 5 ,6]
  ]
]