直接訪問服務連接:
3.1創建核心(core)
當Solr的服務器在獨立模式下啓動的配置稱爲核心,當它在SolrCloud模式啓動的配置稱爲集合。在這個例子中,咱們將有關獨立服務器和核心討論。咱們將在之後再討論SolrCloud。首先,咱們須要建立一個核心的索引數據。Solr的建立命令有如下選項:
- -c <name> -要建立的核心或集合的名稱(必需)。
- -d <confdir> -配置目錄,在SolrCloud模式很是有用。
- -n <configName> -配置名稱。這將默認爲核心或集合的名稱。
- -p <port> -本地Solr的實例的端口發送create命令; 默認腳本試圖經過尋找運行Solr的實例來檢測端口。
- -s <shards> -Number of shards to split a collection into, default is 1.
- -rf <replicas> -集合中的每一個文件的份數。默認值是1。
在這個例子中,咱們將使用的核心名稱和配置目錄-d參數-c參數。對於全部其它參數咱們使用默認設置。
如今在命令窗口瀏覽 solr-5.0.0\bin文件夾,併發出如下命令。
solr create -c jcg -d basic_configs
咱們能夠看到在命令窗口中下面的輸出。
Creating new core 'jcg' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=jcg&instanceDir=jcg
{
"responseHeader":{
"status":0,
"QTime":663},
"core":"jcg"}
2017 03-02
solr配置 :
配置環境 :tomcat1.8 jdk1.8 solr-6.4.1 window
下載solr-6.4.1.zip就行 解壓文件夾 solr-6.4.1
第一步:
把solr-6.4.1.zip解壓以後,找到solr-6.4.1/server/server-webapp/目錄下的webapp文件夾,複製粘貼到tomcat下的webapps下;
第二步:
把
solr-6.4.1/server/lib/ext目錄下的全部jar包
、和
solr-6.4.1/dist下的solr-dataimporthandler-6.4.1.jar、solr-dataimporthandler-extras-6.4.1.jar
粘貼複製到tomcat下的solr項目的WEB-INF/lib目錄下;
第三步:
把server目錄下的solr文件夾粘貼複製到其餘目錄,而後重命名爲:solr-home,這是solr核心文件夾。
第四步:
修改tomcat下的solr項目的WEB-INF/web.xml,這一步用來指定默認的solr/home。在web.xml開頭附近找到:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>D:/soft/apache-tomcat-8.0.39/solr-home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
而後取消註釋,把<env-entry-value>填第三步solr-home文件夾的地址。
第五步:
在tomcat下的solr項目的WEB-INF下新建classes目錄,而後把solr-6.4.1/server/resources下的log4j.properties粘貼過去;
作完這五步就基本搭建完成了,能夠訪問http://localhost:8080/solr/index.html能夠到solr的後臺作一些配置工做。
下面說一下搭建過程當中可能遇到的異常:
1,啓動tomcat時若是報下面的錯誤:
嚴重: Exception starting filter SolrRequestFilter
java.lang.NoClassDefFoundError: com/codahale/metrics/MetricSet
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.newInstance(Class.java:412)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4700)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5340)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.codahale.metrics.MetricSet
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
... 20 more
請把solr-6.4.1/server/lib下的metrics-core-3.1.2.jar,metrics-ganglia-3.1.2.jar,metrics-graphite-3.1.2.jar,metrics-jetty9-3.1.2.jar,metrics-jvm-3.1.2.jar這幾個jar包放到tomcat下的solr項目的WEB-INF/lib目錄下。這個異常是缺乏jar包,具體哪一個不清楚,沒有把metrics開頭的jar包一個一個地
測試
,有耐心的同窗能夠找一下具體哪一個jar包。
2,訪問http://localhost:8080/solr/index.html時若是報下面的錯誤:
HTTP Status 403 - Access to the requested resource has been denied
把tomcat下的solr項目的web.xml文件中
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>
這段註釋掉。這段配置限制了對solr資源的訪問,註釋掉就能夠訪問了。
最後解決掉上面的異常後,重啓tomcat,訪問http://localhost:8080/solr/index.html,不出意外會進入以下圖的頁面
2017 03-22
Elasticsearch
是什麼?
ElasticSearch是一個基於Lucene的搜索服務器。
Elasticsearch
幹什麼用?
它提供了一個分佈式多用戶能力的全文搜索引擎。
Elasticsearch
有什麼好處?
Elasticsearch是用Java開發的,並做爲Apache許可條款下的開放源碼發佈,是當前流行的企業級搜索引擎。設計用於雲計算中,可以達到實時搜索,穩定,可靠,快速,安裝使用方便。
Elasticsearch
怎麼用?
(windows
環境下
)
咱們經過 瀏覽器裏測試一下
能出現這樣的界面表示已經正常運行了
elasticsearch head 是集羣管理工具、數據可視化、增刪改查工具,咱們安裝head插件
而後安裝成功後,在瀏覽器中輸入:http://localhost:9200/_plugin/head/,能夠看到效果。
咱們瞭解下這個控制檯的各部分
咱們看下數據瀏覽視圖
基本查詢視圖
Elasticsearch
有什麼優缺點?
優勢:
橫向可擴展性:只須要增長一臺服務器,作一點兒配置,啓動一下ES進程就能夠併入集羣;
分片機制提供更好的分佈性:同一個索引分紅多個分片(sharding),這點相似於HDFS的塊機制;分而治之的方式來提高處理效率;
高可用:提供複製(replica)機制,一個分片能夠設置多個複製,使得某臺服務器宕機的狀況下,集羣仍舊能夠照常運行,並會把因爲服務器宕機丟失的複製恢復到其它可用節點上.
缺點:
各節點的一致性問題:其默認的機制是經過多播機制,同步元數據信息,可是在比較繁忙的集羣中,可能會因爲網絡的阻塞,或者節點處理能力達到飽和致使各節點元數據不一致——也就是所謂的腦裂問題,這樣會使集羣處於不一致狀態。
沒有細緻的權限管理機制,也就是說,沒有像MySQL那樣的分各類用戶,每一個用戶又有不一樣的權限。因此在操做上的限制須要本身開發一個系統來完成;
Elasticsearch
在
java
中使用
demo
咱們在eclipse中新建maven工程,在pom中引入咱們的elasticsearch座標
這是咱們項目中所須要的jar已經給咱們下載下來了
ES中全部的Java API調用都要使用Client對象,ES爲API調用者提供了兩類Client對象:NodeClient和TransportClient。下面來說講這兩類Client的差別和使用場景。
NodeClient是一種嵌入式節點客戶端。它首先在客戶端啓動一個節點(Node),並加入同名集羣內。這個節點能夠保存數據,而且數據可以被索引。而後從這個節點中獲取Client,這類Client就是NodeClient。NodeClient無需指明ES服務端的地址,操做的數據位於啓動的節點所在的集羣中。
咱們運行代碼看下咱們獲取的client對象
TransportClient鏈接遠端的ES集羣,其自己並不會加入集羣。建立TransportClient的代碼以下:
TransportClient適合用於生產環境中
針對索引的操做
建立索引
進行測試,出現true表示建立索引成功
索引上新建mapping
刪除索引、
對文檔的增刪改查
新增文檔
更新文檔
更具id查詢文檔
複雜查詢,使用filter方式查詢數據
刪除指定id的文檔
根據複雜的查詢條件來刪除文檔
使用min聚合查詢某個字段上最小的值