标签:map cluster ati 初始 oid 行高 rtb wired dex
导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>
配置ES
... spring: application: name: hrm-es-service data: elasticsearch: cluster-name: elasticsearch cluster-nodes: 127.0.0.1:9300 #9200是图形界面端,9300代码端 ...
/** * 针对于 Employee 表的文档映射 * indexName:索引库 * type:类型(表类型) */ @Document(indexName = "hrm" , type = "employee") public class EmployeeDoc { ? //对应文档的id @Id private Long id; ? @Field(type = FieldType.Keyword) //指定为 不分词 private String userName; ? private int age; ? @Field(type =FieldType.Text,analyzer = "ik_max_word",searchAnalyzer = "ik_max_word") private String intr; ...
@RunWith(SpringRunner.class) @SpringBootTest(classes = EsServiceApplication2050.class) public class ESTest { ? @Autowired private ElasticsearchTemplate elasticsearchTemplate; ? @Test public void testCreateIndex() { //创建索引 elasticsearchTemplate.createIndex(EmployeeDoc.class); //做文档映射 elasticsearchTemplate.putMapping(EmployeeDoc.class); } }
@Repository public interface EmployeeElasticsearchRepository extends ElasticsearchRepository<EmployeeDoc,Long> {}
@Autowired private EmployeeElasticsearchRepository employeeElasticsearchRepository; ? //初始化 @Test public void testCreateIndex() { //创建索引 elasticsearchTemplate.createIndex(EmployeeDoc.class); //做文档映射 elasticsearchTemplate.putMapping(EmployeeDoc.class); } //添加数据 @Test public void testAdd(){ ? //准备数据 EmployeeDoc employeeDoc = new EmployeeDoc(); employeeDoc.setAge(18); employeeDoc.setUserName("王大锤"); employeeDoc.setIntr("我爱中国"); ? //添加数据到es employeeElasticsearchRepository.save(employeeDoc); } ? //添加数据 @Test public void testUpdate(){ ? //准备数据 EmployeeDoc employeeDoc = new EmployeeDoc(); employeeDoc.setId(5L); //有id就是修改 employeeDoc.setAge(18); employeeDoc.setUserName("周伯通"); employeeDoc.setIntr("深得童子通真传"); ? //添加数据到es employeeElasticsearchRepository.save(employeeDoc); } //删除数据 @Test public void testDelete(){ employeeElasticsearchRepository.deleteById(5L); } //获取数据 @Test public void testGet(){ Optional<EmployeeDoc> optional = employeeElasticsearchRepository.findById(5L); System.out.println(optional.get()); }
//通过索引库,高级查询和分页 /** * 用户名为 隔壁老王 * age在 10 - 20 * 按照 id排序降序 * 分页 每页 2条 取第一页 */ @Test public void testSearchAndPage() throws Exception{ //1.创建查询建造器对象 NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder(); ? //2.给查询建造器添加查询条件对象 //1.创建组合查询条件对象 BoolQueryBuilder boolQuery = QueryBuilders.boolQuery(); //2.添加查询条件:分词查询:username List<QueryBuilder> must= boolQuery.must(); must.add(QueryBuilders.matchQuery("username","周伯通" )); //2.添加查询条件:范围查询:age:10到30 List<QueryBuilder> filter = boolQuery.filter(); filter.add(QueryBuilders.rangeQuery("age").lte(30).gte(10)); //3.给查询建造器添加查询条件对象 queryBuilder.withQuery(boolQuery); ? //3.给查询建造器添加分页对象:从第0页开始,每页2条 queryBuilder.withPageable(PageRequest.of(0,2 )); ? //4.给查询建造器添加排序 //1.创建排序对象:id,降序 FieldSortBuilder sortBuilder = new FieldSortBuilder("id").order(SortOrder.DESC); //2.给查询建造器添加排序 queryBuilder.withSort(sortBuilder); ? //5.创建查询对象 NativeSearchQuery searchQuery = queryBuilder.build(); ? //6.传给search方法,执行高级查询分页排序功能,得到分页对象 Page<EmployeeDoc> page = employeeElasticsearchRepository.search(searchQuery); ? //7.获取结果 //获得总条数 int totalPages = page.getTotalPages(); System.out.println(totalPages); //获得当前页数据 Iterator<EmployeeDoc> iterator = page.getContent().iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); } }
标签:map cluster ati 初始 oid 行高 rtb wired dex
原文地址:https://www.cnblogs.com/htq29study/p/11617266.html