elasticsearch默认开启两个端口:9200,用于ES节点和外部通讯;9300,用于ES节点之间通讯
报错: org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root ,不能以root用户的身份运行elasticsearch
解决方法:新建用户组和用户,并赋予其elasticsearch文件夹的权限
再次运行
WARN: java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed ,使用新的linux版本即可,不影响使用
启动失败,出现上面四个错误,一一解决
ERROR[1]:无法创建本地文件问题,用户最大可创建文件数太小
解决方法:切换到root用户,编辑limits.conf配置文件
ERROR[2]:无法创建本地线程问题,用户最大可创建线程数太小
解决方法:切换到root用户,进入limits.d目录下,修改90-nproc.conf 配置文件
ERROR[3]:最大虚拟内存太小
解决方法:切换到root用户下,修改配置文件sysctl.conf
ERROR[4]:这是在因为Centos6不支持SecComp,而ES5.2.0默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动
解决方法:在elasticsearch.yml中配置bootstrap.system_call_filter为false
解决完成后,重新启动,启动成功
如果要在后台运行,使用 ./bin/elasticsearch -d 启动
访问 http://192.168.1.200:9200/,返回数据
现在启动elasticsearch,提示jar包冲突
现在启动elasticsearch,没有异常,我们测试一下hanlp分词插件有没有生效
访问: http://192.168.1.200:9200/_analyze?text=%E4%B8%AD%E5%9B%BD%E7%9A%84%E5%86%9B%E4%BA%8B%E5%AE%9E%E5%8A%9B%E4%B8%8E%E6%97%A5%E4%BF%B1%E5%A2%9E&analyzer=hanlp
elasticsearch报错并且退出运行
看上去是权限的问题,这就用到hanlp目录下的 plugin-security.policy 文件,修改 /elasticsearch/config/jvm.options 文件,在末尾添加
继续测试上面的链接,提示找不到hanlp.properties,hanlp无法加载词典,elasticsearch退出运行,解决方法:修改 /elasticsearch/bin/elasticsearch.in.sh 文件,将ES_CLASSPATH修改为:
继续测试上面的链接,访问成功,返回结果
可以看到分词效果比较好,而且停用词也被过滤了,大功告成!
安装JDKJPype并没有像IKVM那样实现自己的JVM,而是以pipe方式调用原生JVM。所以我们需要一个JVM,比如:
Oracle JDK
OpenJDK
安装JDK非常简单,分清楚32位和64位即可,必须与OS和Python的位数一致,具体安装过程不再赘述。
唯一需要注意的是,必须设置环境变量JAVA_HOME到JDK的根目录,JDK的安装程序不一定会帮你做这一步。
安装编译工具链
Python的package一般是以源码形式发布的,其中一些C代码必须在用户机器上编译,所以需要安装编译工具链。当然你也可以跳过这步,直接下载binary。
Windows
安装免费的Visual C++ Express 2010。
Debian/Ubuntu
sudo apt-get install g++
Red Hat/Fedora
su -c 'yum install gcc-c++'
安装JPype
本文读者应该都是Python程序员,所以略过了安装Python这一步。不过必须注意的是,JPype版本与Python的对应兼容关系:
Python2.x:JPype
Python3.x:JPype1-py3
使用setup.py安装
下载源码后解压,在目录下运行:
*nix
sudo python3 setup.py install
Windows
python setup.py install
直接下载binary
当然你也可以选择下载binary,比如JPype1-py3主页上的binary列表。
在Pycharm中安装
如果你正在使用Pycharm这款IDE的话,那么事情就简单多了。
首先在Project Interpreter里面点击加号:
搜索JPype,选择你需要的版本安装:
稍等片刻就安装成功了:
测试安装结果
终于又到了写代码的开心时间了,可以通过如下代码测试是否安装成功:
from jpype import *startJVM(getDefaultJVMPath())java.lang.System.out.println("hello world")shutdownJVM()
输出如下结果表示安装成功:
hello worldJVM activity report : classes loaded : 31JVM has been shutdown
调用HanLP
关于HanLP
HanLP是
一个致力于向生产环境普及NLP技术的开源Java工具包,支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体
识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本推荐,依存句法分析
(MaxEnt依存句法分析、神经网络依存句法分析)。
下载HanLP
你可以直接下载Portable版的jar,零配置。
也可以使用自定义的HanLP——HanLP由3部分组成:类库hanlp.jar包、模型data包、配置文件hanlp.properties,请前往项目主页下载最新版:https://github.com/hankcs/HanLP/releases。对于非portable版,下载后,你需要编辑配置文件第一行的root指向data的父目录,详见文档。
这里,假设新建了一个目录(假定为C:\hanlp),把hanlp.jar和hanlp.properties(portable版的话,仅需一个hanlp-portable.jar)放进去:
Python调用
下面是一份Python3的调用示例:
# -*- coding:utf-8 -*-
# Filename: main.py
# Author:hankcs
# Date: 2015/11/26 14:16
from jpype import *
startJVM(getDefaultJVMPath(), "-Djava.class.path=C:\hanlp\hanlp-1.2.8.jarC:\hanlp", "-Xms1g", "-Xmx1g")
HanLP = JClass('com.hankcs.hanlp.HanLP')
# 中文分词
print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))
testCases = [
"商品和服务",
"结婚的和尚未结婚的确实在干扰分词啊",
"买水果然后来世博园最后去世博会",
"中国的首都是北京",
"欢迎新老师生前来就餐",
"工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作",
"随着页游兴起到现在的页游繁盛,依赖于存档进行逻辑判断的设计减少了,但这块也不能完全忽略掉。"]
for sentence in testCases: print(HanLP.segment(sentence))
# 命名实体识别与词性标注
NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
print(NLPTokenizer.segment('中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程'))
# 关键词提取
document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \
"根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \
"有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \
"严格地进行水资源论证和取水许可的批准。"
print(HanLP.extractKeyword(document, 2))
# 自动摘要
print(HanLP.extractSummary(document, 3))
# 依存句法分析
print(HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))
shutdownJVM()
如何在spring中读取properties配置文件里面的信息一般来说。我们会将一些配置的信息放在。properties文件中。
然后使用${}将配置文件中的信息读取至spring的配置文件。
那么我们如何在spring读取properties文件呢。
1.首先。我们要先在spring配置文件中。定义一个专门读取properties文件的类.
例:
classpath*:jdbc.properties
这里为什么用locations(还有一个location)
是因为。一般来说。我们的项目里面。配置文件可能存在多个。
就算是只有一个。那将来新添加的话。只需在下面再加一个value标签即可。
而不必再重新改动太多。(当然。性能上是否有影响,这个以当前这种服务器的配置来说。是基科可以忽略不计的)。
然后我们就可以在jdbc.properties文件中填写具体的配置信息了。
${jdbc.driverClassName}
${jdbc.url}
${jdbc.username}
${jdbc.password}
jdbc.properties文件写的信息。
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
附加一个列子:
file:/data/pc-config/passport.properties
classpath:memcached.properties
classpath:是指的当前类文件的目录下。
file:在window下是指的当前分区(比如你的项目是放在d盘,则是在d:/data/pc-config/passport.properties)
在linux下,则是当前路径下的文件/data/pc-config/passport.properties
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)