ElasticSearch 8.11 基本操作练习

这篇具有很好参考价值的文章主要介绍了ElasticSearch 8.11 基本操作练习。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ES 8.0 默认把type给去掉了

新增/编辑

PUT /index/id  幂等操作 必须指定id 同一个id为修改

POST /index/id 非幂等操作 指定id时和put操作一样 不指定id 每次都会新增 id为系统随机分配

删除

DELETE /index  删除整个索引

DELETE /index/_doc/id  删除指定document 

查询 

GET /index/_search  不带条件查询所有

GET /index/_doc/id  查询指定document 

复杂查询练习

批量导入一批数据
POST /atguigu/_bulk
{"index":{"_id":1}}
{ "title":"小米手机", "images":"http://image.jd.com/12479122.jpg", "price":1999, "stock": 200, "attr": { "category": "手机", "brand": "小米" } }
{"index":{"_id":2}}
{"title":"超米手机", "images":"http://image.jd.com/12479122.jpg", "price":2999, "stock": 300, "attr": { "category": "手机", "brand": "小米" } }
{"index":{"_id":3}}
{ "title":"小米电视", "images":"http://image.jd.com/12479122.jpg", "price":3999, "stock": 400, "attr": { "category": "电视", "brand": "小米" } }
{"index":{"_id":4}}
{ "title":"小米笔记本", "images":"http://image.jd.com/12479122.jpg", "price":4999, "stock": 200, "attr": { "category": "笔记本", "brand": "小米" } }
{"index":{"_id":5}}
{ "title":"华为手机", "images":"http://image.jd.com/12479122.jpg", "price":3999, "stock": 400, "attr": { "category": "手机", "brand": "华为" } }
{"index":{"_id":6}}
{ "title":"华为笔记本", "images":"http://image.jd.com/12479122.jpg", "price":5999, "stock": 200, "attr": { "category": "笔记本", "brand": "华为" } }
{"index":{"_id":7}}
{ "title":"荣耀手机", "images":"http://image.jd.com/12479122.jpg", "price":2999, "stock": 300, "attr": { "category": "手机", "brand": "华为" } }
{"index":{"_id":8}}
{ "title":"oppo手机", "images":"http://image.jd.com/12479122.jpg", "price":2799, "stock": 400, "attr": { "category": "手机", "brand": "oppo" } }
{"index":{"_id":9}}
{ "title":"vivo手机", "images":"http://image.jd.com/12479122.jpg", "price":2699, "stock": 300, "attr": { "category": "手机", "brand": "vivo" } }
{"index":{"_id":10}}
{ "title":"华为nova手机", "images":"http://image.jd.com/12479122.jpg", "price":2999, "stock": 300, "attr": { "category": "手机", "brand": "华为" } }

# 匹配所有
GET /atguigu/_search
{
  "query": {
    "match_all": {}
  }
}

# 条件匹配 如果是字符串会进行分词拆分 查询出所有的包含分词的数据
GET /atguigu/_search
{
  "query": {
    "match": {
      "title": "小米手机"
    }
  }
}


# 条件匹配 分词拆分走and查询 查询出包含所有分词的数据
GET /atguigu/_search
{
  "query": {
    "match": {
      "title": {
        "query": "小米手机",
        "operator": "and"
      }
    }
  }
}


# 子属性匹配
GET /atguigu/_search
{
  "query": {
    "match": {
      "attr.brand": "小米"
    }
  }
}

# 多字段匹配
GET /atguigu/_search
{
  "query": {
    "multi_match": {
      "query": "小米",
      "operator": "and", 
      "fields": ["title","attr.brand.keyword"]
    }
  }
  
}


# 词条查询  精确查询
GET /atguigu/_search
{
  "query": {
    "term": {
      "price": {
        "value": "4999"
      }
    }
  }
}


# 范围查询
GET /atguigu/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 3000,
        "lte": 3999
      }
    }
  }
}

# 组合查询    `bool`把各种其它查询通过`must`(与)、`must_not`(非)、`should`(或)的方式进行组合  一个组合查询里面只能出现一种组合,不能混用
GET /atguigu/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "price": {
              "gte": 3000,
              "lte": 3999
            }
          }
        },
        {
          "range": {
            "price": {
              "gte": 4000,
              "lte": 4999
            }
          }
        }
      ]
    }
  }
}

组合嵌套查询 should 和must 并列存在 should不生效 所以使用嵌套bool query的方式

GET /atguigu/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "小米手机"
          }
        },
        {
          "bool": {
            "should": [
              {
                "range": {
                  "price": {
                    "gte": 4000,
                    "lte": 5000
                  }
                }
              },
              {
                "range": {
                  "price": {
                    "gte": 3999,
                    "lte": 3999
                  }
                }
              }
            ]
          }
        }
      ]
    }
  }
}


# 过滤 过滤条件不想对结果评分产生影响 可以使用过滤对查询结果进行过滤 `filter`中还可以再次进行`bool`组合条件过滤。
GET /atguigu/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "小米"
          }
        },
        {
          "match": {
            "price": "4999"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "price": {
              "gte": 3000,
              "lte": 4999
            }
          }
        }
      ]
    }
  }
}

# 排序
GET /atguigu/_search
{
  "query": {
    "match": {
      "title": "小米手机"
    }
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    },
    {
      "stock": {
        "order": "desc"
      }
    }
  ]
}


# 分页
GET /atguigu/_search
{
  "query": {
    "match": {
      "attr.brand": "小米手机"
    }
  },
  "from": 0,
  "size": 2
}


# 高亮
GET /atguigu/_search
{
  "query": {
    "match": {
      "attr.category": {
        "query": "笔记本",
        "operator": "and"
      }
    }
  },
  "highlight": {
    "fields": {
      "attr.category": {}
    },
    "pre_tags": "<em>",
    "post_tags": "</em>"
  }
}


# 结果字段过滤
GET /atguigu/_search
{
  "_source": ["title","price","attr"],
  "query": {"match": {
    "price": "3999"
  }}
}

GET /atguigu/_search

# 聚合成桶 "size": 0,  ## 不关心查询多少条数据 只关心聚合结果
GET /atguigu/_search
{
  "size": 0,  
  "aggs": {
    "brands": {
      "terms": {
        "field": "attr.brand.keyword"
      }
    }
  }
}


# 桶内度量
GET /atguigu/_search
{
  "size": 0,
  "aggs": {
    "brand": {
      "terms": {
        "field": "attr.brand.keyword"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        }
      }
    }
  }
}


# 桶内嵌套桶
GET /atguigu/_search
{
  "size": 0,
  "aggs": {
    "brand": {
      "terms": {
        "field": "attr.brand.keyword"
      },
      "aggs": {
        "avg_price": {
          "avg": {
            "field": "price"
          }
        },
        "categorys": {
          "terms": {
            "field": "attr.category.keyword"
          }
        }
      }
    }
  }
}文章来源地址https://www.toymoban.com/news/detail-762662.html

到了这里,关于ElasticSearch 8.11 基本操作练习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch - 基本操作

    本文记录 ES 的一些基本操作,就是对官方文档的一些整理,按自己的习惯重新排版,凑合着看。官方的更详细,建议看官方的。 下文以 books 为索引名举例。 添加单个文档 (没有索引会自动创建) 不指定 id,会随机生成,如果需要指定 id,使用 POST books/_doc/id 还可以使用 put 的

    2024年03月20日
    浏览(42)
  • ElasticSearch基本api操作

    本文章下列所用es本意都为Elaticsearch Elaticsearch ,简称为es, es是一 个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好, 可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索弓和搜

    2024年02月05日
    浏览(44)
  • elasticsearch基本操作之--QueryBuilders

    使用QueryBuilders进行范围时间组合查询 es存储日志 是按照UTC时间格式存放,以@timestamp 作为时间范围查询条件,即from(Date1) to(Date2)Date1、Date2入参必须是标准的utc格式; 数字

    2024年02月13日
    浏览(46)
  • Elasticsearch(四)——ES基本操作

    一、Rest风格说明( 非常重要 ) Rest风格一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。 它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 基于Rest命令说明 method url地址 描述 PUT localh

    2024年02月02日
    浏览(38)
  • Elasticsearch的基本操作与管理

    Elasticsearch是一个基于分布式搜索和分析引擎,由Netflix开发,后被Elasticsearch公司继承。它是一个实时、可扩展、高性能的搜索引擎,可以处理大量数据并提供快速、准确的搜索结果。Elasticsearch使用Lucene库作为底层搜索引擎,并提供RESTful API和JSON格式进行数据交互。 Elasticsea

    2024年02月20日
    浏览(34)
  • ElasticSearch Java API 基本操作

    ElasticSearch Java API是ES官方在8.x版本推出的新java api,也可以适用于7.17.x版本的es。 本文主要参考了相关博文,自己手动编写了下相关操作代码,包括更新mappings等操作的java代码。 代码示例已上传github。 elasticsearch 版本: 7.17.9 ,修改 /elasticsearch-7.17.9/config/elasticsearch.yml ,新增

    2024年02月08日
    浏览(47)
  • 超详细讲解Elasticsearch的基本操作

    📢📢📢📣📣📣 哈喽!大家好 ,我是【 一心同学 】,一位上进心十足的【 Java领域博主】! 😜😜😜 ✨【 一心同学 】的 写作风格 :喜欢用【 通俗易懂 】的文笔去讲解每一个知识点,而不喜欢用【 高大上 】的官方陈述。 ✨【 一心同学 】博客的 领域 是【 面向后端技

    2024年02月03日
    浏览(46)
  • Elasticsearch 实战之三:ES 基本操作

    目录 0. 数据格式说明 1. ES的基本操作 1.1 索引操作 1.1.1 建立索引 1.1.2  删除索引 1.1.3  查询索引 1.2 映射操作 1.2.1 建立映射 1.2.2 查询映射 1.3 基本操作-CRUD 1.3.1 新增和替换文档 1.3.2 查询文档 在实战开始之前,为了便于书写和沟通,本文先来约定一下如何在文章中表达请求

    2024年02月11日
    浏览(46)
  • Elasticsearch之java的基本操作一

    摘要   接触ElasticSearch已经有一段了。在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题。看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得都不是很全面。因此就有了写ElasticSearch开发教程的想法,将学习到的技术经验分享出来,

    2024年02月05日
    浏览(41)
  • Elasticsearch 7.x 基本操作 (CRUD)

    Elasticsearch 是一个流行的开源搜索引擎,用于存储、搜索和分析数据。下面是 Elasticsearch 7.x 版本的基本操作(CRUD): 1、创建索引: 2、查看索引: 3、删除索引: 4、创建文档: 5、获取文档: 6、更新文档: 7、删除文档: 这些操作可以通过 Elasticsearch 的 REST API 进行。注意

    2024年02月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包