Kibana操控ES

1.索引的操作

索引相当于mysql中的表
映射相当于mysql中的指定字段类型
索引不能修改

#查看es中索引
GET /_cat/indices

#查看es中索引和标题
GET /_cat/indices?v

#创建索引
PUT /products

#创建索引、指定映射
PUT /products
{
 "mappings": {
   "properties": {
     "id":{
       "type": "integer"
     },
     "title":{
       "type": "keyword"
     }
   }
 } 
}

#查看映射
GET /products/_mapping

#删除索引
DELETE /products

2.文档的增删改查

文档相当于mysql中的一条记录

#添加文档 手动指定id
POST /products/_doc/1
{
  "id":1,
  "title":"小浣熊"
}

#添加文档 自动创建id
POST /products/_doc/
{
  "title":"小熊猫"
}

#查询文档
GET /products/_doc/1

#删除文档
DELETE /products/_doc/1

#更新文档 会删除原始文档 ,再重新添加
PUT /products/_doc/1
{
  "title":"小浣熊熊"
}

#更新文档 基于指定字段更新
POST /products/_doc/1/_update
{
  "doc":{
    "title":"小小浣熊"
  }
}

3.文档的批量操作

对于批量操作数据不能换行,否则会报错

#批量增加文档
POST /products/_doc/_bulk
{"index":{"_id":2}}
  {"id":2,"title":"腾讯"}
{"index":{"_id":3}}
  {"id":3,"title":"米哈游"}

#批量添加、更新、删除文档
POST /products/_doc/_bulk
{"index":{"_id":4}}
  {"id":4,"title":"甜不辣"}
{"update":{"_id":3}}
  {"doc":{"title":"阿里"}}
{"delete":{"_id":2}}

4.文档的高级查询

#查询所有
GET /products/_search
{
  "query":{
    "match_all":{}
  }
}

#term基于关键词查询
#在ES中中文单字分词,英文单词分词
#在ES中除了text类型分词,其余类型均不分词
GET /products/_search
{
  "query":{
    "term":{
      "title":"阿里"
    }
  }
}

#范围查询
GET /products/_search
{
  "query": {
    "range": {
      "price": {
        "gte": 10, // 这里的gte代表大于等于,gt则代表大于
        "lte": 20 // lte代表小于等于,lt则代表小于
      }
    }
  }
}

#前缀查询
GET /products/_search
{
  "query":{
    "prefix":{
      "title":{
        "value": "小"
      }
    }
  }
}

#wildcard通配符查询 ?匹配一个字符 *匹配多个字符
GET /products/_search
{
  "query":{
    "wildcard":{
      "title":{
        "value": "小?"
      }
    }
  }
}

#根据id组查询
GET /products/_search
{
  "query":{
    "ids":{
      "values": [1,3,4]
    }
  }
}

#模糊查询,不等同mysql的模糊查询,具体可百度
GET /products/_search
{
  "query":{
    "fuzzy":{
      "title":"小浣猫"
    }
  }
}

#布尔查询
#must:必须匹配每个子查询,类似“与”
#should:选择性匹配子查询,类似“或”
#must_not:必须不匹配,不参与算分,类似“非”
#filter:必须匹配,不参与算分
GET /hotel/_search
{
  "query": {
    "bool": {
      "must": [
        {"term": {"city": "上海" }}
      ],
      "should": [
        {"term": {"brand": "皇冠假日" }},
        {"term": {"brand": "华美达" }}
      ],
      "must_not": [
        { "range": { "price": { "lte": 500 } }}
      ],
      "filter": [
        { "range": {"score": { "gte": 45 } }}
      ]
    }
  }
}

#在多个字段中查询,会对关键字进行分词再进行查找
GET /products/_search
{
  "query":{
    "multi_match":{
      "query":"浣猫",
      "fields": ["title","description"]
    }
  }
}

#高亮
#高亮是对关键字高亮,因此搜索条件必须带有关键字,而不能是范围这样的查询。
#默认情况下,高亮的字段,必须与搜索指定的字段一致,否则无法高亮
#如果要对非搜索字段高亮,则需要添加一个属性:required_field_match=false
GET /hotel/_search
{
  "query": {
    "match": {
      "FIELD": "TEXT" // 查询条件,高亮一定要使用全文检索查询
    }
  },
  "highlight": {
    "fields": { // 指定要高亮的字段
      "FIELD": {
        "pre_tags": "<em>",  // 用来标记高亮字段的前置标签
        "post_tags": "</em>" // 用来标记高亮字段的后置标签
      }
    }
  }
}

#分页和升序
GET /hotel/_search
{
  "query": {
    "match_all": {}
  },
  "from": 0, // 分页开始的位置,默认为0
  "size": 10, // 期望获取的文档总数
  "sort": [
    {"price": "asc"}
  ]
}

5.文档的过滤查询

过滤查询不会计算数据得分,第五节以前的查询是文档query查询,这会计算数据得分,影响查询的性能。在ES中是先进行过滤查询,再进行文档query查询。

GET /hotel/_search
{
  "query": {
    "bool": {
      "must": [
        {"term": {"city": "上海" }}
      ],
      "should": [
        {"term": {"brand": "皇冠假日" }},
        {"term": {"brand": "华美达" }}
      ],
      "must_not": [
        { "range": { "price": { "lte": 500 } }}
      ],
      "filter": [
        { "range": {"score": { "gte": 45 } }}
      ]
    }
  }
}

猜你喜欢

转载自blog.csdn.net/qq_44954571/article/details/125497707