【问题标题】:Find document by Id with additional filter in Elasticsearch using Java Jest使用 Java Jest 在 Elasticsearch 中使用附加过滤器按 Id 查找文档
【发布时间】:2020-07-30 14:41:50
【问题描述】:

我正在尝试使用 JEST Java API 通过 Id 获取 Document 并额外检查元素是否存在

例如,假设我有一个 java 对象用户具有字段 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();
    }
  }

有没有更好的方法可以在查询本身中进行此检查。

【问题讨论】:

  • 在elasticsearch dsl中我们使用exists...检查你是否在api中有那个选项。

标签: java elasticsearch elasticsearch-jest


【解决方案1】:

正如 Abhijit 所说,exits query 可能就是您要找的。​​p>

返回包含字段索引值的文档。

在高级 Java 客户端中,它可以与 ExistsQueryBuilder 一起使用。

【讨论】:

  • 如果你能添加一个它的使用例子就好了。
猜你喜欢
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 2016-05-27
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 2020-09-27
相关资源
最近更新 更多