120.【ElastiSearch】(六)

简介: 120.【ElastiSearch】

(九)、关于文档的基本操作 (重点)

1.基本操作

(1). 添加操作 (PUT)
创建第一个数据
PUT /jsxs/user/1
{
  "name":"吉士先生",
  "age":22,
  "desc":"一顿操作猛如虎,一看工资2500",
  "tags":["技术宅","温暖的人","直男"]
}
创建第二个数据
PUT /jsxs/user/2
{
  "name":"吉士先生2",
  "age":23,
  "desc":"一顿操作猛如虎,一看工资2600",
  "tags":["技术宅2","温暖的人2","直男2"]
}
创建第三个数据
PUT /jsxs/user/3
{
  "name":"吉士先生3",
  "age":23,
  "desc":"一顿操作猛如虎,一看工资2700",
  "tags":["技术宅3","温暖的人3","直男3"]
}

(2).获取操作 (GET)
GET jsxs/user/1

(3).更新数据 (PUT)
PUT /jsxs/user/3
{
  "name":"吉士先生4",  #这里进行了修改
  "age":23,
  "desc":"一顿操作猛如虎,一看工资2700",
  "tags":["技术宅3","温暖的人3","直男3"]
}

(4).更新数据 (POST _update) 推荐

这个可以选择性修改,而另一个会全部修改

POST /jsxs/user/3/_update
{
  "doc":{
    "name":"吉士先生55"
  }
}

(5).简单的条件查询 (模糊查询)
GET /jsxs/user/_search?q=name:吉士先生2
• 1

2.复杂操作 (排序、分页、高亮、模糊查询、标准查询)

(1).介绍基本的ElasticSearch的 JSON框架
GET /jsxs/user/_search
{
  "query": {
    "match": {
      "name": "吉士先生2"
    }
  }
}

kibana 里查询的参数体使用Json结构

eq ——> equal 代表相等

在JAVA里面 hit 是一个对象: 会得到所有的信息包括权重。

"hits" : [
      {
        "_index" : "jsxs",
        "_type" : "user",
        "_id" : "2",
        "_score" : 3.8132527,
        "_source" : {
          "name" : "吉士先生2",
          "age" : 23,
          "desc" : "一顿操作猛如虎,一看工资2600",
          "tags" : [
            "技术宅2",
            "温暖的人2",
            "直男2"
          ]
        }
      },
      {
        "_index" : "jsxs",
        "_type" : "user",
        "_id" : "1",
        "_score" : 2.577336,
        "_source" : {
          "name" : "吉士先生",
          "age" : 22,
          "desc" : "一顿操作猛如虎,一看工资2500",
          "tags" : [
            "技术宅",
            "温暖的人",
            "直男"
          ]
        }
      },
      {
        "_index" : "jsxs",
        "_type" : "user",
        "_id" : "3",
        "_score" : 2.3163397,
        "_source" : {
          "name" : "吉士先生55",
          "age" : 23,
          "desc" : "一顿操作猛如虎,一看工资2700",
          "tags" : [
            "技术宅3",
            "温暖的人3",
            "直男3"
          ]
        }
      }
    ]
(2). 结果过滤 (_source)

有时候我们并不想要全部的数据都被打印出来,只需要打印出来部分即可,这时候我们就需要使用过滤了。默认的是全部打印出来...

只需要 name和desc
 "_source":["name","desc"]
GET /jsxs/user/_search
{
  "query": {
    "match": {
      "name": "吉士先生2"
    }
  },
  "_source":["name","desc"]
}

(3).排序 (sort)

通过哪一个字段进行排序

根据年龄进行降序排序->desc  asc->降序
"sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
GET /jsxs/user/_search
{
  "query": {
    "match": {
      "name": "吉士先生2"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

(4).分页查询 (form、size)

分页查询的操作....

从第0页即1页开始,然后每页展示2个数据
  "from": 0,
  "size": 2
GET /jsxs/user/_search
{
  "query": {
    "match": {
      "name": "吉士先生2"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 2
}

数据下标还是从0开始的。

(5).布尔值查询 - and (must)

must (and),所有的条件都要符合 where id=1 and name='xxx'

GET /jsxs/user/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "吉士先生2"
          }
        },
        {
          "match": {
            "age": "23"
          }
        }
      ]
    }
  }
}

(6).布尔值查询 - or (should)

shold (or),所有的条件都要符合 where id=1 orname='xxx' or

GET /jsxs/user/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "吉士先生2"
          }
        },
        {
          "match": {
            "age": "23"
          }
        }
      ]
    }
  }
}
#! Deprecation: [types removal] Specifying types in search requests is deprecated.
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 3,
      "relation" : "eq"
    },
    "max_score" : 3.9415374,
    "hits" : [
      {
        "_index" : "jsxs",
        "_type" : "user",
        "_id" : "2",
        "_score" : 3.9415374,
        "_source" : {
          "name" : "吉士先生2",
          "age" : 23,
          "desc" : "一顿操作猛如虎,一看工资2600",
          "tags" : [
            "技术宅2",
            "温暖的人2",
            "直男2"
          ]
        }
      },
      {
        "_index" : "jsxs",
        "_type" : "user",
        "_id" : "3",
        "_score" : 2.5716512,
        "_source" : {
          "name" : "吉士先生55",
          "age" : 23,
          "desc" : "一顿操作猛如虎,一看工资2700",
          "tags" : [
            "技术宅3",
            "温暖的人3",
            "直男3"
          ]
        }
      },
      {
        "_index" : "jsxs",
        "_type" : "user",
        "_id" : "1",
        "_score" : 1.7364457,
        "_source" : {
          "name" : "吉士先生",
          "age" : 22,
          "desc" : "一顿操作猛如虎,一看工资2500",
          "tags" : [
            "技术宅",
            "温暖的人",
            "直男"
          ]
        }
      }
    ]
  }
}

相关文章
|
索引
120.【ElastiSearch】(十)
120.【ElastiSearch】
59 1
|
SQL JavaScript 数据可视化
120.【ElastiSearch】(二)
120.【ElastiSearch】
56 0
|
搜索推荐 Java 大数据
120.【ElastiSearch】(一)
120.【ElastiSearch】
67 0
|
自然语言处理 算法 数据库
120.【ElastiSearch】(四)
120.【ElastiSearch】
55 0
|
存储 监控 关系型数据库
120.【ElastiSearch】(三)
120.【ElastiSearch】
97 0
|
自然语言处理 索引
120.【ElastiSearch】(七)
120.【ElastiSearch】
68 0
|
5月前
|
存储 自然语言处理 搜索推荐
【技术解析 | 实践】Havenask分析器
本次分享内容为Havenask的分析器,本次课程主要分为3部分内容(分析器介绍、解释分析器主要配置、实战演示),希望本次通过分享帮助大家更好了解和使用Havenask。
52248 3
【技术解析 | 实践】Havenask分析器
|
4月前
|
网络安全 数据库 Python
常用百宝箱——日志处理
常用百宝箱——日志处理
|
缓存 网络架构 索引
120.【ElastiSearch】(五)
120.【ElastiSearch】
38 0
|
API 索引
120.【ElastiSearch】(九)
120.【ElastiSearch】
50 0