通过 ID 读取文档
编辑通过 ID 读取文档
编辑Elasticsearch 的核心是搜索,但您可能也想直接访问文档,前提是知道它们的标识符。“get” 请求就是为此而设计的。
有关 get 请求的完整说明,请参阅Elasticsearch API 文档。
读取域对象
编辑下面的示例从 products
索引中读取标识符为 bk-1
的文档。
get
请求有两个参数:
- 第一个参数是实际的请求,使用流畅的 DSL 构建如下
- 第二个参数是我们要将文档的 JSON 映射到的类。
GetResponse<Product> response = esClient.get(g -> g .index("products") .id("bk-1"), Product.class ); if (response.found()) { Product product = response.source(); logger.info("Product name " + product.getName()); } else { logger.info ("Product not found"); }
读取原始 JSON
编辑当您的索引包含半结构化数据,或者您没有域对象定义时,您也可以将文档读取为原始 JSON 数据。
原始 JSON 数据只是您可以作为 get 请求的结果类型的另一个类。在下面的示例中,我们使用 Jackson 的 ObjectNode
。我们也可以使用任何可以由与 ElasticsearchClient
关联的 JSON 映射器反序列化的 JSON 表示形式。
GetResponse<ObjectNode> response = esClient.get(g -> g .index("products") .id("bk-1"), ObjectNode.class ); if (response.found()) { ObjectNode json = response.source(); String name = json.get("name").asText(); logger.info("Product name " + name); } else { logger.info("Product not found"); }
以上示例的源代码可以在Java API 客户端测试中找到。