当前位置: 首页 > java>阅读正文

elasticSearch在windows上的基本使用

2022.6.9 朱丰华 467 次 留下评论 2877字

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

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注