官網 :https://www.elastic.co/products/elasticsearchnode
目錄結構: bin 存放 elasticSearch 運行命令
config 存放配置文件
lib 存放 elasticSearch 運行依賴 jar 包
modules 存放 elasticSearch 模塊
plugins 存放插件
運行 elasticSearch/bin/elasticsearch.bat文件(須要配置JAVA_HOME環境變量)正則表達式
ElasticSearch 插件安裝 es head
在cmd %elasticsearch%/bin/ 輸入 plugin.bat install mobz/elasticsearch-head
訪問 http://localhost:9200/_plugin/head/ 查詢安裝是否成功spring
ElasticSearch基礎概念
索引:是Elasticsearch對邏輯 數據的邏輯儲存,能夠把它當作關係型數據庫的表(存儲數據的表結構 ,任何搜索數據,存在索引對象上)
文檔:儲存在ElasticSearch中的主要實體,能夠當作數據庫表中的一行記錄(一條數據記錄, 存在索引對象上)
文檔類型:在ElasticSearch中,一個索引對象能夠儲存不少不用用途的對象(一個索引對象 存放多種類型數據, 數據用文檔類型進行標識)
映射:爲建索引和搜索準備輸入文本( 數據如何存放到索引對象上,須要有一個映射配置, 數據類型、是否存儲、是否分詞 …)數據庫
IK分詞器瀏覽器
下載後在本地進行解壓縮,以後進入解壓縮的目錄運行mvn clean package命令進行編譯。編譯後在release目錄中找到生成的elasticsearch-analysis-ik-1.10.0.zip壓縮包。解壓縮之後生成以下目錄結構:app
把這些文件拷貝到%elasticsearch-2.4.0%/plugins/analysis-ik目錄下elasticsearch
而後target/releases/elasticsearch-analysis-ik-1.10.0/config下的文件:maven
拷貝到elasticsearch的config文件夾下就能夠。測試
接下來修改配置文件elasticsearch.yml:ui
添加index.analysis.analyzer.ik.type: "ik"配置給ik解析器添加一個標示
下面測試一下,在瀏覽器中輸入以下內容:
http://172.16.0.104:9200/_analyze?analyzer=ik&pretty=true&text=我是中國人
與springdata整合:
maven 導入座標
導入 spring-test 和 junit 編寫測試用例
Slf4j-log4j 日誌包
在 src/main/resources 下創建 applicationContext.xml 和 log4j.properties
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/elasticsearch
http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd">
<!-- 掃描Dao包 實現自動建立 -->
<elasticsearch:repositories base-package="cn.itcast.dao" />
<!-- 掃描 @Server -->
<context:component-scan base-package="cn.itcast.service"/>
<!-- 配置elasticsearch 鏈接 -->
<elasticsearch:transport-client id="client" cluster-nodes="localhost:9300"/>
<!-- spring data elasticseach Dao 依賴 模板 -->
<bean id="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
<constructor-arg name="client" ref="client" />
</bean>
</beans>
索引和映射如何建立 --- 基於 spring data elasticsearch 註解
在使用 spring data elasticsearch 開發, 須要將索引和映射信息 配置實體類上面
@Document 文檔對象 (索引信息、文檔類型 )
@Id 文檔主鍵 惟一標識
@Field 每一個文檔的字段配置(類型、是否分詞、是否存儲、分詞器 )
@Document(indexName="blog3",type="article")
public class Article {
@Id
@Field(index=FieldIndex.not_analyzed, store=true,type=FieldType.Integer)
private Integer id;
@Field(index=FieldIndex.analyzed,searchAnalyzer="ik",analyzer="ik",store=true,
type=FieldType.String)
private String title;
@Field(index=FieldIndex.analyzed,searchAnalyzer="ik",analyzer="ik",store=true,
type=FieldType.String)
private String content;
}
測試類
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class MyTest {
@Autowired
private ArticleService articleService;
@Autowired
private Client client;
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
@Test
public void demo(){
elasticsearchTemplate.createIndex(Article.class);
elasticsearchTemplate.putMapping(Article.class);
}
}
搜索文檔數據查詢數據 主要依賴 QueryBuilder 對象 ,能夠經過 QueryBuilders 獲取boolQuery() 布爾查詢,能夠用來組合多個查詢條件fuzzyQuery() 類似度查詢matchAllQuery() 查詢全部數據regexpQuery() 正則表達式查詢termQuery() 詞條查詢wildcardQuery() 模糊查詢