elasticSearch是一个基于Lucense的搜索引擎
安装、配置、启动
官网下载:
Past Releases of Elastic Stack Software | Elastic
本站下载:
elasticsearch-8.2.0-windows-x86_64.zip
下载后,得到一个压缩包,解压即可。
设置Jvm内存
默认情况下,es占用内存很大,经过测试 es 8.2.0 版本默认占用内存 24GB。
如果小于 24 GB,则该服务器也面临 99% 内存的情况。
通过修改配置文件,指定 es 运行时的内存。找到 config 目录下的 jvm.options ,取消以下注释,设置内存为4g
-Xms4g
-Xmx4g
运行es
双击 bin 目录下的 elasticsearch.bat 即可运行。
运行后,通过访问 localhost:9200 即可查看到版本信息,例如:
{
"name" : "WIN-H9LROLJ1A84",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "PES2EHk0Tf-g7fohwucrjg",
"version" : {
"number" : "8.2.0",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "b174af62e8dd9f4ac4d25875e9381ffe2b9282c5",
"build_date" : "2022-04-20T10:35:10.180408517Z",
"build_snapshot" : false,
"lucene_version" : "9.1.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
此时,不要关闭 cmd 窗口,首次运行时自动给出 elastic 用户的密码,记住该密码。
如果关闭窗口或按下 ctrl+c 会停止 es 程序。
如果希望后台运行,方法一:新建一个 vbs 文件(ANSI编码)
dir = createobject("Scripting.FileSystemObject").GetFolder(".").Path
dir = dir & "/bin/elasticsearch.bat"
'Wscript.echo dir
CreateObject("WScript.Shell").Run dir,0
msgbox "ES启动成功",vbOKOnly,"ElaSticSearch"
方法二:使用内置的 -d 参数
打开 cmd ,通过命令:
elasticsearch -d
这里的 elasticsearch.bat 可省略 .bat ,其中 -d 是指在后台运行,请参考 -h 给出的帮助信息
D:\elasticsearch-8.2.0\bin>elasticsearch -h
Starts Elasticsearch
Option Description
------ -----------
-E <KeyValuePair> Configure a setting
-V, --version Prints Elasticsearch version information and exits
-d, --daemonize Starts Elasticsearch in the background
-h, --help Show help
-p, --pidfile <Path> Creates a pid file in the specified path on start
-q, --quiet Turns off standard output/error streams logging in console
-s, --silent Show minimal output
-v, --verbose Show verbose output
另外,在该帮助信息中也看到了,没有关闭命令?
在windows中要关闭后台运行的es,通过关闭进程的方式实现,首先我们看看有没有 elasticsearch 进程?
tasklist | findstr "elastic"
结果并没有找到 elastic 相关的进程,实际上运行中的进程名为 java
D:\elasticsearch-8.2.0\bin>tasklist | findstr "java"
java.exe 1560 Console 1 4,644,560 K
如果电脑运行了 java ,又运行了 es,通过命令杀死 java 进程,会不会造成两个java都被干掉?有可能。
但是 es 的端口是固定的,即使有另一个 Java,它占用的端口也不可能相同,比如可能是 8080, 而 es为9200。我们通过查找端口占用程序,关闭它即可。
使用 bat,注意 ANSI 编码,如果端口未改变,运行后回车即可
@setlocal enabledelayedexpansion
@echo off
cls
color 0a
TITLE StopElasticSearch Power By zhufenghua
:main
set /p port=请输入ElasticSearch端口号(默认9200):
if "%port%"=="" (set port=9200)
echo.
echo 预关闭端口为:%port% 的进程
echo.
set iskill=0
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
if %%m NEQ 0 (
if !iskill! EQU 0 (
taskkill /f /pid %%m
set iskill=1
)
)
)
if %iskill% EQU 0 (
echo 提示:该端口没有找到正在运行的程序。
)
echo.
goto main
查看es的状态,同理查看该端口是否有运行的进程(bat):
@setlocal enabledelayedexpansion
@echo off
cls
color 0a
TITLE StatusElasticSearch Power By zhufenghua
:main
echo ***************************
set /p port=请输入ElasticSearch端口号(默认9200):
if "%port%"=="" (set port=9200)
echo.
echo 查找端口为:%port% 的进程:
echo.
set isExist=0
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do (
if %%m NEQ 0 (
if !isExist! EQU 0 (
set isExist=1
echo 映像名称 PID 会话名 会话# 内存使用
echo.
echo ========================= ======== ================ =========== ============
tasklist | findstr "%%m"
)
)
)
if %isExist% EQU 0 (
echo 提示:该端口没有找到正在运行的程序。
)
echo.
goto main
本篇完,还有疑问?留下评论吧