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; }