文章目录
- 前言
- elasticsearch 常用语法汇总
- 1. 创建索引
- 2. 检索索引信息
- 3. 删除索引
- 4. 文档操作
- 4.1. 对blog_new索引指定文档ID新增
- 4.2. 对blog_new索引不指定文档ID新增,随机文档ID:
- 4.3. 获取文档
- 4.4. 更新文档
- 4.5. 删除文档
- 5. 查询
- 5.1. 匹配查询
- 5.2. 范围查询
- 5.3. 布尔查询
- 5.4. 分页查询
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
elasticsearch 常用语法汇总
1. 创建索引
PUT /<index_name>
示例:
PUT /<index_name>
{
"settings": {
"number_of_shards": 10, // 将主分片数量
"number_of_replicas": 1 // 根据需要设置副本数量
}
}
2. 检索索引信息
GET /<index_name>
3. 删除索引
DELETE /<index_name>
4. 文档操作
测试:索引:blog_new
4.1. 对blog_new索引指定文档ID新增
POST /blog_new/_doc/文档ID
{
"title": "jstat命令查看jvm的GC信息6",
"content": "jstat命令查看jvm的GC信息99999999999923213",
"author": "uuuuu",
"publish_date": "2024-04-26",
"tags": ["Elasticsearch", "Search", "Tutorial"]
}
4.2. 对blog_new索引不指定文档ID新增,随机文档ID:
POST /blog_new/_doc
{
"title": "jstat命令查看jvm的GC信息6",
"content": "jstat命令查看jvm的GC信息99999999999923213",
"author": "uuuuu",
"publish_date": "2024-04-26",
"tags": ["Elasticsearch", "Search", "Tutorial"]
}
4.3. 获取文档
GET /<index_name>/_doc/<document_id>
4.4. 更新文档
POST /<index_name>/_update/<document_id>
{
"doc": {
"field1": "new_value1",
"field2": "new_value2",
...
}
}
获取文档:
4.5. 删除文档
DELETE /<index_name>/_doc/<document_id>
5. 查询
在Elasticsearch中,搜索文档通常涉及构建一个查询DSL,以指定要搜索的内容和搜索条件。查询DSL可以包含不同类型的查询,如匹配查询、范围查询、布尔查询,聚合查询等
5.1. 匹配查询
# 匹配查询
GET /blog_new/_search
{
"query": {
"match": {
"author": "糖炒栗子"
}
},
"size": 1000 //设置查询返回数
}
"match"查询:
1、作用:用于在文本字段中执行全文搜索,查找包含指定词语或短语的文档。
2、使用场景:适用于执行基于文本内容的搜索,比如在文章标题、正文或作者名中查找特定关键词。
3、示例:“match”: { “field_name”: “search_term” }
5.2. 范围查询
{
"query": {
"range": {
"age": {
"gte": 18,
"lte": 30
}
}
},
"size": 1000 //设置查询返回数
}
- “range”:指定进行范围查询。
- “age”:指定要进行范围查询的字段名。
- “gte”:表示大于或等于(Greater Than or Equal to),即最小值。
- “lte”:表示小于或等于(Less Than or Equal to),即最大值。
示例:
GET /blog_new/_search
{
"query": {
"range": {
"content": {
"gte": "18",
"lte": "300"
}
}
},
"size": 1000 //设置查询返回数
}
5.3. 布尔查询
{
"query": {
"bool": {
"must": [
{ "match": { "title": "Elasticsearch" }},
{ "range": { "publish_date": { "gte": "2022-01-01" }}}
],
"must_not": [
{ "match": { "status": "draft" }}
],
"should": [
{ "match": { "author": "John Doe" }}
],
"minimum_should_match": 1
}
},
"size": 1000 //设置查询返回数
}
在这个示例中,我们使用了布尔查询来构建复杂的查询逻辑,包括以下几个部分:
- must:指定了所有这些条件都必须满足的查询子句。在示例中,文档的标题必须包含"Elasticsearch",并且发布日期必须在2022年1月1日之后。
- must_not:指定了文档不能匹配的条件。在示例中,文档的状态不能是"draft"。
- should:指定了一个可选条件,如果满足则增加文档的匹配分数。在示例中,作者是"John Doe"的文档将得到一定的优先级,但不是必须的。
- minimum_should_match:指定了至少满足几个"should"查询条件,默认是0。在示例中,至少有一个"should"查询条件必须满足。
这个布尔查询的示例展示了如何利用布尔逻辑组合多个条件,以精确地过滤和排序文档。您可以根据实际需求修改查询条件和逻辑,以实现您想要的查询效果。
示例:
GET /blog_new/_search
{
"query": {
"bool": {
"must":[{"match": { "tags": "Elasticsearch" }},
{"range": { "content": {"gte": "18","lte": "300" }}}
],
"must_not": [
{ "match": { "author": "yangzhenyu" }}
],
"should": [
{ "match": { "author": "糖炒栗子" }}
],
"minimum_should_match": 1
}
}
}
5.4. 分页查询
您可以使用"from"和"size"参数来实现分页:
- "from"参数指定了查询结果中的偏移量,即从哪个文档开始返回结果。
- "size"参数指定了每页返回的文档数。
例如,如果您想要获取第一页的结果,每页返回10个文档,您可以将"from"设置为0,"size"设置为10。如果想获取第二页的结果,您可以将"from"设置为10,"size"设置为10,以此类推。
以下是一个示例查询的JSON格式,其中包括了设置分页参数的部分。
{
"query": {
// 查询条件
},
"from": 0, // 从第一个文档开始
"size": 10 // 返回10个文档
}
示例:
GET /blog_new/_search
{
"query": {
"bool": {
"must":[{"match": { "tags": "Elasticsearch" }},
{"range": { "content": {"gte": "18","lte": "300" }}}
]
}
},
"from":0,
"size": 1000
}
GET /blog_new/_search
{
"query": {
"bool": {
"must":[{"match": { "tags": "Elasticsearch" }},
{"range": { "content": {"gte": "18","lte": "300" }}}
]
}
},
"from":343,
"size": 1000
}