1.在虚拟机安装ElasticSearch遇到的问题
(1)don't run elasticsearch as root.
参考https://blog.csdn.net/mengfei86/article/details/51210093
因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户
第一步:liunx创建新用户 adduser XXX 然后给创建的用户加密码 passwd XXX 输入两次密码。
第二步:切换刚才创建的用户 su XXX 然后执行elasticsearch 会显示Permission denied 权限不足。
第三步:给新建的XXX赋权限,chmod 777 * 这个不行,因为这个用户本身就没有权限,肯定自己不能给自己付权限。所以要用root用户登录付权限。
第四步:root给XXX赋权限,chown -R XXX /你的elasticsearch安装目录。
然后执行成功。
(2)学习视频参考 https://www.imooc.com/video/15764
(3)node安装 http://www.cnblogs.com/lpbottle/p/7733397.html
2. 使用的方式主要两种:
① 一种是经过 SpringData 封装过的,直接在 dao 接口继承 ElasticsearchRepository 即可
@Component public interface ProductDocumentRepository extends ElasticsearchRepository<ProductDocument,String> { }
② 一种是经过 Spring 封装过的,直接在 Service/Controller 中引入该 bean 即可
在pom中引入jar包
配置文件
# elasticsearch.yml 文件中的 cluster.name spring.data.elasticsearch.cluster-name=my-application # elasticsearch 调用地址,多个使用“,”隔开 spring.data.elasticsearch.cluster-nodes=127.0.0.1:9300
@Autowired
ElasticsearchTemplate elasticsearchTemplate;
/** * 高亮显示,返回分页 * @auther: zhoudong * @date: 2018/12/18 10:29 */ @Override public Page<Map<String, Object>> queryHitByPage(int pageNo,int pageSize, String keyword, String indexName, String... fieldNames) { // 构造查询条件,使用标准分词器. QueryBuilder matchQuery = createQueryBuilder(keyword,fieldNames); // 设置高亮,使用默认的highlighter高亮器 HighlightBuilder highlightBuilder = createHighlightBuilder(fieldNames); // 设置查询字段 SearchResponse response = elasticsearchTemplate.getClient().prepareSearch(indexName) .setQuery(matchQuery) .highlighter(highlightBuilder) .setFrom((pageNo-1) * pageSize) .setSize(pageNo * pageSize) // 设置一次返回的文档数量,最大值:10000 .get(); // 返回搜索结果 SearchHits hits = response.getHits(); Long totalCount = hits.getTotalHits(); Page<Map<String, Object>> page = new Page<>(pageNo,pageSize,totalCount.intValue()); page.setList(getHitList(hits)); return page; }