赞
踩
type会被弃用 ,就是说之后的elasticSearch中只会存在 索引(indices) 和 一行(document) 和字段(fields)
elasticSearch 和solr的区别最大的就是 es对应的 是 json的格式 。 solr有xml和josn等等。但是es更强
核心数据原理
对于某个字段搜索出来的结果有很多, 更具相似的设置对应的文档的权重进行排序。
就像是这样建立索引
ik分词器,如果想要自定义的搜索的标签可以自行加到ik分词器中。ik分词器作为一个插件,需要手动的添加到elasticSearch中的plugin中。
分词算法,有ik_smart 和ik_max_word ,其中ik_smart为最少切分 ,ik_max_word是最细粒度切分。
ik_max_word:能够将所有的可能都展示出来
ik_smart: 展示的比较少
如何定义自定义的分词
可以看见 狂神说,不是一个分词。
可以在ik分词器中自定义一个 狂神说
之后启动 es 和kibana 的bat ,再npm run start 页面head
这样,狂神说就变成了一个分词
es是支持Rest风格的api
这里进行添加数据
这里尝试在同一个索引库中添加 类属于不同类型 的数据
结论:直接报错。 说在7.0版本上一个索引库只能够有一个类型 。可以看出 这个类型没有任何作用。 对应如前面说所的,type这个字段在8.0将会被删除。
其实这玩意本质就是一个数据库。
get 这就不用说了,
上手springboot整合es Test
- @SpringBootTest
- class JueJiuApplicationTests {
- @Autowired
- private RedisTemplate redisTemplate;
- @Autowired
- TokenGenerate tokenGenerate;
-
- @Autowired
- RestHighLevelClient highLevelClient;
-
-
- @Autowired
- EssayService essayService;
- @Test
- void contextLoads() {
-
- }
- /**处理 Essay的数据
- *
- * 这里将mysql的数据都batch到es中
- *
- * */
- @Test
- void mysqlAndES(){
- List<Essay> list = essayService.list();
- list.forEach(one->{
- System.out.println(one.toString());
-
-
- });
-
- }
- @Test
- void createIndex() throws IOException {
- /**
- * 创建一个索引
- * */
- String indexName = "juejiu";
- CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName);
- highLevelClient.indices().create( createIndexRequest , RequestOptions.DEFAULT);
-
- /**查询索引的信息
- * */
-
- // GetIndexRequest getIndexRequest = new GetIndexRequest(indexName);
- // GetIndexResponse getIndexResponse = highLevelClient
- // .indices().get(getIndexRequest, RequestOptions.DEFAULT);
- // System.out.println("----------------打印出索引的信息" + getIndexResponse);
-
- /**
- * 删除索引信息
- * */
- // DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(indexName) ;
- // AcknowledgedResponse delete = highLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
- // System.out.println("----------------删除出索引的信息" + delete.toString());
- // System.out.println("----------------删除出索引的信息" + delete.isAcknowledged());
-
-
- }
-
- @Test
- void saveToES() throws IOException {
- String indexName = "juejiu";
- IPage<EssayDto> iPage = new Page<>();
- iPage.setCurrent(1);
- iPage.setSize(100);
- EssayVo essayVo = new EssayVo();
- IPage<EssayDto> page = essayService.getPage(iPage, essayVo);
-
- BulkRequest bulkRequest = new BulkRequest();
-
- page.getRecords().forEach(one->{
- IndexRequest indexRequest = new IndexRequest()
- .source(JSON.toJSONString(one), XContentType.JSON)
- .index(indexName);
- bulkRequest.add(indexRequest);
- });
-
- BulkResponse bulkResponse = highLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
- System.out.println("---------bulk的结果"+ (!bulkResponse.hasFailures()));
-
- }
-
- @Test
- /***/
-
- void searchResult() throws IOException {
- String indexName = "juejiu";
- SearchRequest searchRequest = new SearchRequest(indexName);
- SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
- Query query = new Query(4,1);
- searchSourceBuilder.from(query.getCurrent());
- searchSourceBuilder.size(query.getSize());
-
- /***
- * 添加查询条件
- * */
-
-
-
- searchRequest.source(searchSourceBuilder);
-
- SearchResponse search = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
- System.out.println(search);
- System.out.println("-----------");
- System.out.println(search.getHits());
- search.getHits().forEach(one->{
-
-
- System.out.println("单个的hit"+one.getSourceAsString());
- });
-
-
-
-
- }
springboot整合ES实现 论坛的 es替换查询
- String indexName = "juejiu";
- SearchRequest searchRequest = new SearchRequest(indexName);
- SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
- searchSourceBuilder.from(query.getCurrent());
- searchSourceBuilder.size(query.getSize());
-
- /***
- * 添加查询条件
- * */
-
- searchRequest.source(searchSourceBuilder);
- SearchResponse search = highLevelClient.search(searchRequest, RequestOptions.DEFAULT);
-
-
- /**
- * 暂停原代码 不返回page对象
- *
- * */
- //
- // System.out.println("-----------------------------"+query.toString());
- // System.out.println("-----------------------------"+essayVo.toString());
- // IPage<EssayDto> iPage = new Page<>();
- // iPage.setCurrent(query.getCurrent());
- // iPage.setSize(query.getSize());
- // IPage<EssayDto> list = essayService.getPage(iPage,essayVo);
- // HashMap hashMap = new HashMap<>();
- // list.getRecords().stream().map(one -> {
- // Date createTime = one.getCreateTime();
- // String essayTitle = one.getEssayTitle();
- // hashMap.put(createTime, essayTitle);
- // return null;
- // }).collect(Collectors.toList());
- // System.out.println("----------------------------------------");
- // System.out.println(hashMap);
- IPage<EssayDto> iPage = new Page();
- List<EssayDto> list = new ArrayList<>();
- search.getHits().forEach(one->{
- Map<String, Object> sourceAsMap = one.getSourceAsMap();
- EssayDto essayDto = new EssayDto();
- essayDto.setEssayId((Integer) sourceAsMap.get("essayId"));
- essayDto.setEssayTitle(sourceAsMap.get("essayTitle").toString());
- essayDto.setEssayContext(sourceAsMap.get("essayContext").toString());
- essayDto.setEssayPageViewTimes((Integer) sourceAsMap.get("essayPageViewTimes"));
- essayDto.setCreateTime(Date.from(LocalDateTime.parse(sourceAsMap.get("createTime").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant()));
- Map<String, Object> userMap = (Map<String, Object>) sourceAsMap.get("user");
- User user = new User();
- user.setId((Integer) userMap.get("id"));
- user.setAccount(userMap.get("account").toString());
- user.setPassword(userMap.get("password").toString());
-
- user.setAvatar(userMap.get("avatar").toString());
- user.setPhone(userMap.get("phone").toString());
- user.setRealName(userMap.get("realName").toString());
- user.setEmail(userMap.get("email").toString());
- user.setSex((Integer) userMap.get("sex"));
- // user.setBirthday(String.valueOf(Date.parse(userMap.get("birthday").toString())));
- essayDto.setUser(user);
- Map<String, Object> tagMap = (Map<String, Object>) sourceAsMap.get("tag");
- Tag tag = new Tag();
- tag.setTagId((Integer) tagMap.get("tagId"));
- tag.setTagName(tagMap.get("tagName").toString());
- essayDto.setTag(tag);
- essayDto.setUserId((Integer) sourceAsMap.get("userId"));
- essayDto.setEssayPageViewTimes((Integer) sourceAsMap.get("essayPageViewTimes"));
- essayDto.setCreateTime(Date.from(LocalDateTime.parse(sourceAsMap.get("createTime").toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")).atZone(ZoneId.systemDefault()).toInstant()));
- essayDto.setEssayId((Integer) sourceAsMap.get("essayId"));
- essayDto.setUser(user);
- essayDto.setTag(tag);
- list.add(essayDto);
- });
- iPage.setRecords(list);
- iPage.setCurrent(query.getCurrent());
- iPage.setSize(query.getSize());
-
- return Result.SUCCESS(iPage);
单体的es 实现easy
后续提供更新策略 和多条件等结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。