直接访问服务链接:
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.0in文件夹,并发出以下命令。
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环境下)
首先他是基于java环境的在安装它之前必须安装java环境,jdk保证是8,下载他自己的工具包(http://www.elasticsearch.org/download), 解压到指定目录,在命令窗口进入到解压后的bin目录下,双击elasticsearch.bat,出现类似下列图样.
我们通过 浏览器里测试一下
能出现这样的界面表示已经正常运行了
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聚合查询某个字段上最小的值