eslasticsearch操作集锦

索引-index:一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字

类型-type:一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型

文档-document:一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表示。许多条 Document 构成了一个 Index,可以是json格式

Node 与 Cluster:

Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例。

单个 Elastic 实例称为一个节点(node)。一组节点构成一个集群(cluster)。

  健康检查: curl 'localhost:9200/_cat/health?v'
status:绿色代表一切正常(集群功能齐全),黄色意味着所有的数据都是可用的,但是某些复制没有被分配(集群功能齐全),红色则代表因为某些原因,某些数据不可用
 
节点查询:curl 'localhost:9200/_cat/nodes?v'
 
索引列表: curl 'localhost:9200/_cat/indices?v'
 
   1.新建和删除 Index
curl -X PUT 'localhost:9200/xxx'
curl -X DELETE 'localhost:9200/weather'

2新增记录
curl -X PUT 'localhost:9200/hupu/xxx/1' -d '
{
  "title": "怎么选?",
  "readnum": "43243",
  "likenum": "3124"
}' 
id可以指定,可以不指定;id不一定是数字,也可以是字符串

3.查看记录
curl 'localhost:9200/hupu/xxx/1?pretty=true'
4删除记录
curl -X DELETE 'localhost:9200/hupu/xxx/1'
5更新记录
curl -X PUT 'localhost:9200/hupu/xxx/1' -d '
{
 "title": "怎么选?",
  "readnum": "43243",
  "likenum": "3124"

}'
6返回所有记录
curl 'localhost:9200/hupu/xxx/_search'
took字段表示该操作的耗时(单位为毫秒),timed_out字段表示是否超时,hits字段表示命中的记
  • total:返回记录数,本例是2条。
  • max_score:最高的匹配程度,本例是1.0
  • hits:返回的记录组成的数组。

返回的记录中,每条记录都有一个_score字段,表示匹配的程序,默认是按照这个字段降序排列。

7 全文搜索

Elastic 的查询非常特别,使用自己的查询语法,要求 GET 请求带有数据体。


$ curl 'localhost:9200/accounts/person/_search'  -d '
{
  "query" : { "match" : { "desc" : "软件" }}
}'

上面代码使用 Match 查询,指定的匹配条件是desc字段里面包含"软件"这个词。返回结果如下。


{
  "took":3, "timed_out":false, "_shards":{"total":5,"successful":5,"failed":0}, "hits":{ "total":1, "max_score":0.28582606, "hits":[ { "_index":"accounts", "_type":"person", "_id":"1", "_score":0.28582606, "_source": { "user" : "张三", "title" : "工程师", "desc" : "数据库管理,软件开发" } } ] } } 

Elastic 默认一次返回10条结果,可以通过size字段改变这个设置。


$ curl 'localhost:9200/accounts/person/_search'  -d '
{
  "query" : { "match" : { "desc" : "管理" }},
  "size": 1
}'

上面代码指定,每次只返回一条结果。

还可以通过from字段,指定位移。


$ curl 'localhost:9200/accounts/person/_search'  -d '
{
  "query" : { "match" : { "desc" : "管理" }},
  "from": 1,
  "size": 1
}'

上面代码指定,从位置1开始(默认是从位置0开始),只返回一条结果。

8逻辑运算

如果有多个搜索关键字, Elastic 认为它们是or关系。


$ curl 'localhost:9200/accounts/person/_search'  -d '
{
  "query" : { "match" : { "desc" : "软件 系统" }}
}'

上面代码搜索的是软件 or 系统

如果要执行多个关键词的and搜索,必须使用布尔查询


$ curl 'localhost:9200/accounts/person/_search'  -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "desc": "软件" } },
        { "match": { "desc": "系统" } }
      ]
    }
  }
}'
 
 

转载于:https://www.cnblogs.com/guixiaoming/p/8508941.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Elasticsearch是一款开源的分布式搜索引擎,可以快速、准确地进行全文搜索。在Elasticsearch中,我们可以通过聚合(Aggregation)功能来实现对数据的分组查询。 聚合查询可以用于从数据集中检索分组数据、计算统计信息和生成结果汇总。在进行聚合查询时,首先需要指定一个或多个聚合条件,然后Elasticsearch会根据这些条件对数据进行分组,并返回每个分组的统计结果。 常用的聚合类型有: 1. 桶聚合(Bucket Aggregations):桶聚合用于基于某个字段对数据进行分组。例如,我们可以通过字段(如地理位置、日期、年龄等)对数据进行桶聚合,获取每个分组的数量、平均值等统计信息。 2. 指标聚合(Metric Aggregations):指标聚合用于计算某个字段的统计信息,如求和、平均值、最大值、最小值等。通过指标聚合,我们可以方便地获取某个字段的总和、平均值等指标。 3. 嵌套聚合(Nested Aggregations):嵌套聚合可以在其他聚合内部进行聚合,实现对数据的多级分组查询。例如,我们可以先按年龄分组,再在每个年龄组内按性别进行分组,获取每个组的统计信息。 在使用Elasticsearch进行分组查询时,我们需要首先创建索引,并确保索引中包含需要进行分组的字段。然后,可以使用聚合查询来进行分组统计。查询结果将会包含每个分组的统计信息,如分组数量、指标统计等。 总之,Elasticsearch的分组查询功能可以帮助我们轻松地对数据进行分组统计。通过合理的聚合条件和查询语句,可以快速获取所需的分组信息和统计结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值