ElasticSearch学习(一)

一、ElasticSearch的下载

下载地址https://www.elastic.co/downloads/elasticsearch

选择windows版本的下载

解压后运行bin下的elasticsearch.bat文件

访问http://localhost:9200/  进行验证

出现下图即为启动成功

二、辅助管理工具Kibana5

下载地址:https://www.elastic.co/cn/downloads/kibana

解压后修改config/kibana.yml中的elasticsearch.url值为已启动的ES,默认为http://localhost:9200/

启动bin/kibana.bat

访问http://localhost:5601 需ES启动成功Kibana5才能启动成功访问该页面

三、

#查询所有
    GET /_search
        返回数据含义:
            took:耗时多少毫秒
            timed_out:是否超时,默认无timeout    
            _shards:shards fail的条件(primary和replica全部挂掉),不影响其他shard。默认情况下来说,一个搜索请求,会打到一个index的所有primary shards上去,当然了,每个primary shards都可能会有一个或多个replic shards,所以请求也可以到primary shard的其中一个replica shard上去。
            hits.total:本次搜索返回的结果总条数
            hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
            hits.hits:包含了匹配搜索的document的详细数据,默认查询前10条数据,按_score降序排序
        设置timeout时间:    
            #timeout=10ms,timeout=1s,timeout=1m
            GET /_search?timeout=10m

#! Deprecation: the default number of shards will change from [5] to [1] in 7.0.0; if you wish to continue using the default of [5] shards, you must manage this on the create index request or with an index template
7.0之前默认会创建5个shared,7.0开始之后创建一个shard,需要5个的话要修改配置

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

    #查询
    GET /ecommerce/product/1

    #替换文档(全量替换)
    PUT /ecommerce/product/1
    {
        "name" : "jiaqiangban gaolujie yagao",
        "desc" :  "gaoxiao meibai",
        "price" :  30,
        "producer" :      "gaolujie producer",
        "tags": [ "meibai", "fangzhu" ]
    }

        注意:document是不可变的,可以通过全量替换修改,重新建立索引,替换里面所有内容;
                  es会将老的document标记为deleted,然后新增一个document给我们使用,再在适当的时机在后台自动删除标记为deleted的document;
                  替换必须带上所有的filed,否则其他数据会丢失。
    
    #更新文档(修改)
    POST /ecommerce/product/1/_update
    {
      "doc": {
        "name": "jiaqiangban1 gaolujie yagao"
      }
    }

    #删除文档(删除)
    DELETE /ecommerce/product/1

#query string search
GET /ecommerce/product/_search
#搜索商品名称中包含yagao的商品,而且按照售价降序排序
GET /ecommerce/product/_search?q=name:yagao&sort=price:desc

#query DSL
#1.查询所有的商品
GET /ecommerce/product/_search
{
  "query": { "match_all": {} }
}
#2.查询名称包含yagao的商品,同时按照价格降序排序
GET /ecommerce/product/_search
{
    "query" : {
        "match" : {
            "name" : "yagao"
        }
    },
    "sort": [
        { "price": "desc" }
    ]
}
#3.分页查询
GET /ecommerce/product/_search
{
  "query": { "match_all": {} },
  "from": 2,
  "size": 2
}
#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" : { "gt" : 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" : "gaolujie producer"
        }
    }
}
#8.多条件查询
#名字中有"yagao",描述上可以有fangzhu也可以没有,价格不能是25元
#must表示一定要满足;
#should表示可以满足也可以不满足;
#must_not表示不能满足该条件;
#"minimum_should_match": 1,表示最小匹配度,可以设置为百分百
#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
    }
  }
}
 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值