Elastisearch在kibana下常用命令总结

1、获取所有数据

GET  /_search

2、创建一个Document

PUT /ecommerce/product/1
{
    "name" : "gaolujie yagao",
    "desc" :  "gaoxiao meibai",
    "price" :  30,
    "producer" :      "gaolujie producer",
    "tags": [ "meibai", "fangzhu" ]
}

PUT /ecommerce/product/2
{
    "name" : "jiajieshi yagao",
    "desc" :  "youxiao fangzhu",
    "price" :  25,
    "producer" :      "jiajieshi producer",
    "tags": [ "fangzhu" ]
}
PUT /ecommerce/product/3
{
    "name" : "zhonghua yagao",
    "desc" :  "caoben zhiwu",
    "price" :  40,
    "producer" :      "zhonghua producer",
    "tags": [ "qingxin" ]
}

3、检索文档查询

GET /ecommerce/product/1

4、替换文档(全量替换)

PUT /ecommerce/product/1
{
    "name" : "jiaqiangban gaolujie yagao",
    "desc" :  "gaoxiao meibai",
    "price" :  30,
    "producer" :      "gaolujie producer",
    "tags": [ "meibai", "fangzhu" ]
}

5、更新文档(_update)

POST /ecommerce/product/1/_update
{
  "doc":
    {
      "price":70
    }
}

6、删除文档

DELETE /ecommerce/product/1

注意:在删除一个Document之后,它不是立即物理删除的,因为它的版本等信息还保留着

二、请求分类

1、query string search
类似这种 搜索全部商品:GET /ecommerce/product/_search(参数直接拼接在请求url上,不带json参数的)
query string search的由来,因为search参数都是以http请求的query string来附带的
搜索商品名称中包含yagao的商品,而且按照售价降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是如果查询请求很复杂,是很难去构建的,所以在生产环境中,几乎很少使用query string search
2、query DSL

DSL:Domain Specified Language,特定领域的语言
http request body:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search肯定强大多了。

实例一:查询所有的商品

GET ecommerce/product/_search
{
  "query":
    {
      "match_all": {}
    }
}

实例二:查询名称包含yaogao的产品,同时按照价格进行降序排序

GET ecommerce/product/_search
{
  "query": {
    "match": {
      "name": "yaogao"
    }
  },
  "sort": [
    {
      "price":"desc"
    }
  ]
}

3、分页查询
总共3条商品,假设每页就显示1条商品,现在显示第1页,所以就查出来第1个商品

GET ecommerce/product/_search
{
  "query": {
    "match_all": {}
  }, 
  "from": 0,
  "size": 1
}

4、查询指定项

GET ecommerce/product/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["name","price"]
}

5、过滤查询

搜索商品名称包含yagao,而且售价大于25元的商品

GET ecommerce/product/_search
{
  "query": {
    "bool": {
      "must": {
          "match" : {
            "name" : "yagao" }
      },
      "filter": {
        "range": {
          "price": {
            "gte": 25
          }
        }
      }
    }
  }
}

6、full-text search(全文检索)

全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回

GET ecommerce/product/_search
{
  "query": {
    "match": {
      "producer": "yagao producer"
    }
  }
}

7、phrase search(短语搜索)

phrase search,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回

GET ecommerce/product/_search
{
  "query": {
    "match_phrase": {
      "producer": "jiajieshi producer"
    }
  }
}

8、多条件查询

名字中有"yagao",描述上可以有fangzhu也可以没有,价格不能是25元

must表示一定要满足;

should表示可以满足也可以不满足;

must_not表示不能满足该条件;

"minimum_should_match": 1,表示最小匹配度,可以设置为百分百,详情看源文档Elasticsearch Reference [6.4] » Query DSL » Minimum Should Match,
设置了这个值的时候就必须满足should里面的设置了,另外注意这边should里面同一字段设置的多个值(意思是当这个值等于X或者等于Y的时候都成立,务必注意格式)
GET /ecommerce/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
           "name": "yagao"
          }
        }
      ],
      "should": [
        {
          "match": {
            "desc": "fangzhu"
          }
        },
        {
          "match": {
            "desc": "caoben"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "price": 25
          }
        }
      ],
     "minimum_should_match": 1
    }
  }
}

multi-index和multi-type搜索模式

告诉你如何一次性搜索多个index和多个type下的数据

/_search:所有索引,所有type下的所有数据都搜索出来

/index1/_search:指定一个index,搜索其下所有type的数据

/index1,index2/_search:同时搜索两个index下的数据

/test1_*,test2_*/_search:按照通配符去匹配多个索引

/index1/type1/_search:搜索一个index下指定的type的数据

/index1/type1,type2/_search:可以搜索一个index下多个type的数据

/index1,index2/type1,type2/_search:搜索多个index下的多个type的数据

/_all/type1,type2/_search:_all,可以代表搜索所有index下的指定type的数据

原文地址:https://www.cnblogs.com/yfb918/p/10695257.html