OS: linux
-
jdk
若机器已配置java环境,则可以跳过此部分。
$ echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
否则:
先看是否有java(可能仅仅是没有配置环境变量)
若有,则按如下步骤找到jdk的位置(如下所示,本机中,该位置为:/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java):
$ java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~18.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
# 按如下步骤找到jdk的位置
$ which java
/usr/bin/java
$ ls -lrt /usr/bin/java
lrwxrwxrwx 1 root root 22 7月 22 2021 /usr/bin/java -> /etc/alternatives/java
$ ls -lrt /etc/alternatives/java
lrwxrwxrwx 1 root root 46 7月 22 2021 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
lrwxrwxrwx 1 root root 46 7月 22 2021 /etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
找到位置(如标红的字串所示)之后,配置环境变量:
$vi /etc/profile
export JAVA_HOME=$/path/to/java
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
若找不到java,即java -version 没有信息返回。则需要先下载jdk,安装并配置环境变量。(具体方法搜索即可,不介绍。)
-
elasticsearch_config
官网上下载对应的elasticsearch版本,解压,改名。(为了方便我切换了root用户。)
root@zhengjia:/home/software/es# ls
elasticsearch-8.2.0-linux-x86_64.tar.gz
root@zhengjia:/home/software/es# tar -zvxf elasticsearch-8.2.0-linux-x86_64.tar.gz
进入 elasticsearch 新建文件夹data, logs
root@zhengjia:/home/software/es/elasticsearch# mkdir data
root@zhengjia:/home/software/es/elasticsearch# mkdir logs
修改配置
vi config/elasticsearch.yml
cluster.name: my-application #集群名称 node.name: node-1 #节点名称 #数据和日志的存储目录 path.data: /path/to/elasticsearch /data path.logs: /path/to/elasticsearch /logs #设置绑定的ip,设置为0.0.0.0以后就可以让任何计算机节点访问到了 network.host: 0.0.0.0 http.port: 9200 #端口 #设置在集群中的所有节点名称,这个节点名称就是之前所修改的,当然你也可以采用默认的也行,目前是单机,放入一个节点即可 cluster.initial_master_nodes: ["node-1"]
修改java的jvm内存配置,elasticsearch使用java的jvm默认是使用4G的内存,修改为512M
$ vi config/jvm.options
-Xms512m
-Xmx512m
elasticsearch是不能使用root用户操作,创建一个用户并赋予操作权限。
useradd esuser
passwd esuser
# 输入两次密码
chown -R esuser /path/to/elasticsearch
vi 编辑 /etc/security/limits.conf,在末尾加上:
esuser soft nofile 65536 esuser hard nofile 65536 esuser soft nproc 4096 esuser hard nproc 4096
vi 编辑 /etc/sysctl.conf,在末尾加上:
vm.max_map_count = 655360
在root用户下执行sysctl -p,可看到修改结果。
root@zhengjia:/home/software/es/elasticsearch# sysctl -p
vm.max_map_count = 655360
切换esuser用户,并启动elasticsearch
esuser@zhengjia:/home/software/es/elasticsearch$ ./bin/elasticsearch
-
data_insert_search
# !pip install elasticsearch
from elasticsearch import Elasticsearch
es = Elasticsearch( "http://localhost:9200" )
# 批量插入
# data 为元素为dict 的 list
for i,body in enumerate(data):
es.create(index='test1', id=i, body=body)
# 数据获取
# -- get 方法 指定索引,文档类型, id 查询出单条数据
res = es.get(index='test1', id=1)
print(res)
# -- search 方法 查询满足条件的所有文档, 没有id属性, 且index, doc_type和body均可为None
res = es.search(index='test1')
print(res)
# -- 在search 方法中 body 并不是文档中的body 而是一个query查询对象
query = {
"query":{
"match":{
"<中文摘要>":"新石器时代"
}
}
}
res = es.search(index='test1', body=query)
print(res)
关闭鉴权使得任何访问都不需要账号密码:
sudo vi config//elasticsearch.yml
xpack.security.enabled: false