查询操作
dbVisitor 将 HTTP 方法 + 路径 + JSON 作为可执行语句。@Query 中也可以写 REST 命令,并不要求 SELECT。以下示例使用 Elasticsearch 7 的无类型请求。 连接配置见 JDBC Elasticsearch.
实体映射
@Table("user_info")
public class UserInfo {
@Column(primary = true)
private String uid;
private String name;
// 省略 getter 和 setter
}
索引名和字段名的大小写规则见名称敏感性。
精确匹配
示例索引需将 uid、name 定义为 keyword:
PUT /user_info {"mappings":{"properties":{"uid":{"type":"keyword"},"name":{"type":"keyword"}}}}
构造器 eq 生成 match 查询。对 text 字段,它可能匹配分词后的内容;需要精确匹配时,使用 keyword 字段及下面的 term 请求。
执行查询命令
JdbcTemplate jdbc = new JdbcTemplate(dataSource);
List<UserInfo> rows = jdbc.queryForList(
"POST /user_info/_search {\"query\":{\"term\":{\"uid\": ?}}}",
new Object[] { "1001" }, UserInfo.class);