ES 7.X最全最新操作命令整理

ES 中简要对比关系

ES 分词器

standard:单字切分
ik_smart:最少拆分
ik_max_word:最细切分

POST _analyze
{
  "analyzer": "standard",
  "text": "我爱你JAVA!"
}

GET _analyze
{
  "analyzer": "ik_smart",
  "text": "张三老铁学习java!"
}

GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "张三老铁学习java!"
}

查看索引

GET _cat/indices?v&s=index:asc

创建映射

如果 index是false。不支持查询,默认是true

PUT product
{
	"mappings": {
		"properties": {
			"product": {
				"mappings": {
					"properties": {
						"brandId": {
							"type": "keyword"
						},
						"brandName": {
							"type": "keyword"
						},
						"id": {
							"type": "text",
							"fields": {
								"keyword": {
									"type": "keyword",
									"ignore_above": 256
                                    "index": false
								}
							}
						},
						"keyword": {
							"type": "text",
							"analyzer": "ik_max_word"
						},
						"origin": {
							"type": "text",
							"analyzer": "ik_max_word"
						},
						"price": {
							"type": "float"
						},
						"title": {
							"type": "text",
							"analyzer": "ik_max_word"
						}
					}
				}
			}
		}
	}
}

查询映射

GET product/_mapping

POST 、PUT写入文档

1. PUT、GET、DELETE是幂等的,由于同一条这样的指令,执行多次结果都一样。POST非幂等

2.POST不用加具体的id,它是作用在一个集合资源之上的(/uri),而PUT操作是作用在一个具体资源之上的(/uri/xxx)

POST /product/_doc
{
  "id" : "145454",
 "title" : "999",
 "price" : 0.90,
 "origin" : "陕西省",
 "brandId" : "2",
 "brandName" : "锤子",
 "keyword" : "锤子手机"
}


PUT /product/_doc/MM7k1YAB3fJ6uCuW5sKW
{
  "id" : "16666",
 "title" : "999",
 "price" : 0.90,
 "origin" : "陕西省",
 "brandId" : "2",
 "brandName" : "锤子",
 "keyword" : "锤子手机"
}

查询当前索引下的数据

ES7.X  type 的类型默认都是 "_doc",以下是无条件查询

GET /product/product/_search
{
	"query": {
		"match_all": {}
	}
}

GET /product/_search
{
	"query": {
		"match_all": {}
	}
}

 _id 文档的id

 基本查询

GET /product/_search
GET /product/_search?q=id:"16666"
GET /product/_doc/MM7k1YAB3fJ6uCuW5sKW
GET /product/_search?q=price:"2799.99"
GET /product/_search?q=price:>"2799.99"
GET /product/_search?q=price:"2799.99"&q=id:3
GET /product/_search?q=price:"2799.99"&q=id:3&q=brandName:"小米"
GET /product/_search?q=price["10" TO "2799.99"]
GET /product/_search?q=price["10" TO "2799.99"]&sort=price:desc
GET /product/_search?q=price["10" TO "2799.99"]&from=0&size=1
GET /product/_search?q=price["10" TO "2799.99"]&from=0&size=1&_source=title,price,origin

_bulk 批量操作文档

POST _bulk
{"create":{"_index":"product","_type":"product","_id":"30"}}
{"id":"30","title":"小米note 4g手机","price":2799.99,"origin":"广东省深圳市","brandId":"3","brandName":"小米","keyword":"小米note手机"}
{"create":{"_index":"product","_type":"product","_id":"50"}}
{"id":"50","title":"小米note 4g手机","price":2799.99,"origin":"广东省深圳市","brandId":"3","brandName":"小米","keyword":"小米note手机"}


POST _bulk
{"update":{"_index":"product","_type":"product","_id":"30"}}
{"id":"30","title":"小米note 4g手机","price":2799.99,"origin":"广东省深圳市","brandId":"3","brandName":"小米","keyword":"小米note手机"}
{"create":{"_index":"product","_type":"product","_id":"50"}}
{"id":"50","title":"小米note 4g手机","price":2799.99,"origin":"广东省深圳市","brandId":"3","brandName":"小米","keyword":"小米note手机"}


POST _bulk
{"delete":{"_index":"product","_type":"product","_id":"30"}}
{"id":"30","title":"小米note 4g手机","price":2799.99,"origin":"广东省深圳市","brandId":"3","brandName":"小米","keyword":"小米note手机"}
{"create":{"_index":"product","_type":"product","_id":"50"}}
{"id":"50","title":"小米note 4g手机","price":2799.99,"origin":"广东省深圳市","brandId":"3","brandName":"小米","keyword":"小米note手机"}

_mget 批量获取文档

GET _mget
{
	"docs": [{
		"_index": "product",
		"_type": "_doc",
		"_id": 1
	}, {
		"_index": "article",
		"_type": "_doc",
		"_id": 999
	}]
}

GET /product/_mget
{
	"docs": [{
		"_type": "_doc",
		"_id": 1
	}, {
		"_type": "_doc",
		"_id": 2
	}]
}

GET /product/_doc/_mget
{
	"docs": [{
		"_id": 1
	}, {
		"_id": 2
	}]
}

term 精确匹配

GET /product/_search
{
  	"query": {
		"term": {
			"id": "1"
		}
	}
}

match模糊匹配

GET /product/_search
{
    "from": 0,
    "size": 3, 
  	"query": {
		"match": {
			"keyword": "手机"
		}
	}
}

multi_match 多条件模糊匹配

GET /product/_search
{
    "from": 0,
    "size": 3, 
  	"query": {
		"multi_match": {
		  "query": "手机", 
			"fields": ["title","keyword"]
		}
	}
}

query_string   含AND与OR条件

GET /product/_search
{
    "from": 0,
    "size": 3, 
  	"query": {
		"multi_match": {
		  "query": "广州 OR 长沙", 
			"fields": ["title","keyword"]
		}
	}
}

范围值

gte 、lte 范围值

from、size 分页参数

_source  只查询的字段

sort 排序

POST /product/_search
{
	"query": {
		"range": {
			"price": {
				"gte": 1,
				"lte": 50000
			}
		}
	},
	"from": 0,
	"size": 2,
	"_source": ["id", "price", "title", "origin"],
	"sort": {
		"price": "desc"
	}
}

fiter 

过滤器方式查询,它的查询不会计算相关性分值,也不会对结果进行排序,因此效率会高一点,查询的结果可以被缓存

GET /product/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "wildcard": {
            "id": "*1*"
          }
        }
      ]
    }
  }
}

GET _search
{
  "query": {
    "bool": {
      "filter": [
        {
          "wildcard": {
            "id": "*1*"
          }
        }
      ]
    }
  }
}

对已存在的mapping映射进行修改

具体方法
1)如果要推倒现有的映射, 你得重新建立一个静态索引
2)然后把之前索引里的数据导入到新的索引里
3)删除原创建的索引
4)为新索引起个别名, 为原索引名

  •  重新建索引
PUT product_update
{
	"mappings": {
		"properties": {
			"product": {
				"mappings": {
					"properties": {
						"brandId": {
							"type": "keyword"
						},
						"brandName": {
							"type": "keyword"
						},
						"id": {
							"type": "text",
							"fields": {
								"keyword": {
									"type": "keyword",
									"ignore_above": 256
                                    "index": false
								}
							}
						},
						"keyword": {
							"type": "text",
							"analyzer": "ik_max_word"
						},
						"origin": {
							"type": "text",
							"analyzer": "ik_max_word"
						},
						"price": {
							"type": "float"
						},
						"title": {
							"type": "text",
							"analyzer": "ik_max_word"
                            "index": false
						}
					}
				}
			}
		}
	}
}
  • 将数据导入新的索引
POST  _reindex {
	"source": {
		"index": "product"
	},
	"dest": {
		"index": "product_update"
	}
}
  • 删除原来的索引
DELETE /product
  • 取别名 


 

 PUT /product_update/_alias/product_test

<think>好的,我现在需要回答用户在Windows系统下安装和配置Elasticsearch 8.17.4的具体步骤。用户之前提到过8.17.2版本的安装,现在需要升级到8.17.4,可能步骤类似,但需要注意版本差异。 首先,我应该确认用户的需求是明确的:安装Elasticsearch 8.17.4在Windows上,并且需要具体的步骤。根据用户提供的引用内容,之前的引用[1]提到版本统一的重要性,所以需要强调用户确保所有相关组件(如Kibana、分词器插件)都使用8.17.4版本,避免兼容性问题。引用[2]中的配置信息可能需要调整版本号,同时密码设置部分也需要参考。引用[3]提到Elasticsearch在Windows环境的搭建,可能涉及环境变量或服务的安装步骤。 接下来,我需要整理安装步骤。通常,Elasticsearch在Windows上的安装包括下载ZIP包、解压、配置环境变量、修改配置文件、启动服务等。用户可能需要知道如何下载正确版本,解压后的配置调整,比如设置JVM堆大小,配置网络绑定地址,安全设置如启用SSL和设置用户密码,以及如何作为服务安装。 另外,用户可能需要测试安装是否成功,比如通过curl或浏览器访问9200端口。同时,要提醒用户检查Java版本,因为Elasticsearch 8.x需要Java 17或更高版本,这一点在之前的引用中没有提到,但很重要。 然后,关于配置部分,需要参考用户提供的引用[2],比如配置elasticsearch.yml中的network.host为0.0.0.0,以及安全相关的配置。同时,设置Kibana连接时的用户名和密码,这部分在Elasticsearch 8.x中默认启用安全功能,所以需要生成或自定义密码。 可能还需要提到插件的安装,比如analysis-ik分词器,但用户的问题主要是安装和配置Elasticsearch本身,所以可能需要简要说明插件安装步骤,或者建议用户参考其他指南。 最后,生成相关问题,考虑用户可能遇到的后续问题,比如性能调优、集群配置、与其他组件集成等,或者常见错误解决方法,比如端口冲突、内存不足等。 需要注意用户提到的版本是8.17.4,而之前的引用是8.17.2,所以步骤大致相同,但要确保所有提到的版本号都更新到8.17.4,避免用户混淆。同时,强调Spring Boot版本兼容性,如果用户打算与Spring Boot集成,需要对应版本,如Spring Boot 3.x支持Elasticsearch 8.x,这一点在引用[1]中提到过。 总结步骤:下载安装包、解压、配置环境变量、调整elasticsearch.yml、启动服务、验证安装、安全配置。每个步骤需要详细说明,特别是安全配置部分,因为8.x默认开启安全功能,用户可能需要设置密码和证书。 可能还需要提醒用户Windows防火墙设置,允许9200端口,以及如何作为后台服务运行,使用elasticsearch-service.bat安装服务。 现在需要将这些步骤结构化,用清晰的中文描述,并确保LaTeX格式正确,比如代码块用反引号,行内变量用$...$。同时,引用之前的引用内容,比如在版本统一和配置部分添加引用标识。</think>### Windows系统下Elasticsearch 8.17.4安装与配置教程 #### 1. 环境准备 - **Java版本要求**:Elasticsearch 8.x需要JDK 17或更高版本。可通过`java -version`验证。 - **下载安装包**: 从[Elastic官网](https://www.elastic.co/downloads/elasticsearch)下载`elasticsearch-8.17.4-windows-x86_64.zip`。 #### 2. 安装步骤 **步骤1:解压文件** 将ZIP包解压至目标目录(如`D:\elasticsearch-8.17.4`),路径避免包含空格或中文。 **步骤2:配置环境变量** 添加系统变量`ES_HOME`指向解压目录,并将`%ES_HOME%\bin`加入`Path`变量。 **步骤3:调整JVM堆大小** 修改`config/jvm.options`文件,设置内存参数(根据机器配置调整): ``` -Xms1g -Xmx1g ``` **步骤4:修改elasticsearch.yml** 编辑`config/elasticsearch.yml`,关键配置如下: ```yaml # 允许所有IP访问 network.host: 0.0.0.0 # 关闭安全功能(仅测试环境建议) # xpack.security.enabled: false # 集群名称 cluster.name: my-es-cluster ``` **步骤5:启用安全功能(默认开启)** Elasticsearch 8.x默认启用安全认证。首次启动时会自动生成以下内容: - 节点证书(`config/certs`目录) - 内置用户(如`elastic`)的初始密码(显示在控制台) 若需自定义密码,执行以下命令: ```bash bin\elasticsearch-reset-password -u elastic ``` **步骤6:安装为Windows服务** 以管理员身份运行CMD,执行: ```bash bin\elasticsearch-service.bat install net start elasticsearch-service ``` #### 3. 验证安装 访问`http://localhost:9200`,若返回如下JSON即成功: ```json { "name": "主机名", "cluster_name": "my-es-cluster", "version": { "number": "8.17.4" } } ``` #### 4. 配置Kibana连接(可选) 若需连接Kibana,修改Kibana的`kibana.yml`,确保版本为8.17.4: ```yaml elasticsearch.hosts: ["http://localhost:9200"] elasticsearch.username: "elastic" elasticsearch.password: "your_password" i18n.locale: "zh-CN" ``` [^2] #### 5. 插件安装(示例:IK分词器) 1. 下载与Elasticsearch 8.17.4匹配的[IK插件](https://github.com/medcl/elasticsearch-analysis-ik/releases)。 2. 解压至`plugins/ik`目录。 3. 重启Elasticsearch服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值