使用 Java Jest 在 Elasticsearch 中使用附加过滤器按 Id 查找文档
Find document by Id with additional filter in Elasticsearch using Java Jest
我正在尝试使用 JEST Java API 通过 Id 获取文档并额外检查元素是否存在
例如,假设我有一个 java 对象 User 具有字段 id、firstname、lastname,如果文档索引根本没有 firstname 元素,我想将其过滤掉
现在我正在做这样的事情
public Optional<User> findById(long id) {
try {
Get action = new Get.Builder(INDEX_ALIAS, String.valueOf(id)).build();
User user= execute(action).getSourceAsObject(User.class);
if (user!= null && user.getFirstName()!=null)) {
return Optional.ofNullable(user);
} else {
return Optional.empty();
}
} catch (NoSuchElementException ex) {
return Optional.empty();
}
}
是否有更好的方法在查询本身中进行此检查。
正如 Abhijit 提到的,exits query 可能就是您要找的。
Returns documents that contain an indexed value for a field.
在高级 Java 客户端中,它可以与 ExistsQueryBuilder 一起使用。
我正在尝试使用 JEST Java API 通过 Id 获取文档并额外检查元素是否存在
例如,假设我有一个 java 对象 User 具有字段 id、firstname、lastname,如果文档索引根本没有 firstname 元素,我想将其过滤掉
现在我正在做这样的事情
public Optional<User> findById(long id) {
try {
Get action = new Get.Builder(INDEX_ALIAS, String.valueOf(id)).build();
User user= execute(action).getSourceAsObject(User.class);
if (user!= null && user.getFirstName()!=null)) {
return Optional.ofNullable(user);
} else {
return Optional.empty();
}
} catch (NoSuchElementException ex) {
return Optional.empty();
}
}
是否有更好的方法在查询本身中进行此检查。
正如 Abhijit 提到的,exits query 可能就是您要找的。
Returns documents that contain an indexed value for a field.
在高级 Java 客户端中,它可以与 ExistsQueryBuilder 一起使用。