Elastsearch 基本查询

Elastsearch 基本查询

Elasticsearch是功能非常强大的全文搜索引擎,使用elasticsearch的目的是能够快速的查询到想要的数据。

基本查询:利用Elasticsearch内置查询条件进行查询

组合查询:把多个基本查询组合在一起的复合性查询

过滤:查询时,通过filter条件再不影响打分的情况下筛选出想要的数据

term,terms查询
from,size
返回版本号_version
match查询
升序降序
prefix前缀匹配查询
range范围查询
wildcard通配符查询
fuzzy模糊查询
more_like_this&more_like_this_field查询

#chakanceshishuju查看测试数据
GET /library/books/_mget
{
  "ids":["1","2","3","4","5","6","7","8"]
}

#查看library的mapping信息
GET /library/_mapping

#查看shakespeare的mapping信息 
GET /shakespeare/_mapping

#---------------------------------
#简单的查询

#指定index名以及type名de的搜索
GET /library/books/_search?q=title:elasticsearch

#指定index名没有type名的搜索   
GET /library/_search?q=title:mongodb

#既没有index又没有type名的搜索
GET /_search?q=title:elasticsearch

#---------------------------------------
#term查询
GET /library/books/_search
{
  "query":{
    "term": {
      "preview": ["ealsticsearch","book"],
      "minmum_match": 1
    }
  }
}

#--------------------------------------------
#控制查询返回的数量 

#from 和 size
#相当于mysql中的 limit
#from:从哪一个结果开始返回
#size:定义返回的最大结果数 
GET /library/books/_search?q=title:elasticsearch

GET /library/books/_search
{
  "from":1,
  "size":2,
  "query":{
    "term": {
      "title":"elasticsearch"
    }
  }
}

#-------------------------------------------------
#

#返回版本号 _version

GET /library/books/_search
{
  "version":true
  "query": {
    "term": {
      "preview":"elasticsearch"
    }
  }
}

#----------------------------------------------------
#match查询 
#match查询可接受文字 ,数字 ,日期等数据类型 
#match跟term的区别是:match查询的时候,elasticsearch会根据你给定的字段提供合适的分析器 ,而term查询不会有分析器分析的过程      
GET /library/books/_search
{
  "query":{
    "match": {
      "perview":"elasticsearch"
    }
  }
}


GET /library/books/_search
{
  "query":{
    "match":{
      "price":11
    }
  }
}

#通过 match_all查询 
#chaxun查询指定索引下的所有文档 
GET /library/books/_search
{
  "query":{
    "match_all": {}
  }
}

#通过 match_phrase查询 
#短语查询 ,slop定义的是关键词之间间隔 多少未知单词
GET /library/books/_search
{
  "query":{
    "match_phrase":{
      "preview":{
        "query":"Elasticsearch ,distributed",
        "slop":2
      }
    }
  }
}

#multi_match查询 
#可以指定多个字段 
#比如查 titlehe和 preview这两个字段里都包含Elasticsearch关键词的文档 
GET /library/books/_search
{
  "query":{
    "multi_match":{
      "query":"Elasticsearch",
      "fields":["title","perview"]
    }
  }
}

#-------------------------------------------------
#

#指定返回的字段 
#注意只能返回 store为 yes的字段 
GET /library/books/_search
{
  "fields":["preview"],
  "query":{
    "match":{
      "perview":"elasticsearch"
    }
  }
}


#通过 partial_fields控制加载的字段 
GET /library/books/_search
{
  "partial_fields": {
    "partial":{
      "include": ["preview"],
      "exclude":["title,price"]

    }

  },
    "query":{
      "match_all": {}
  }
}


#还能加通配符  *
GET /library/books/_search
{
  "partial_fields": {
    "partial":{
      "include":["pr*"]
      "exclude":["tit*"]
    }
  },
  "query":{
    "match_all": {}
  }
}


#----------------------------------------------------
#paixu排序 

#通过 sort把结果排序 
#desc 降序 
#asc 升序
GET /library/books/_search
{
  "query":{
    "match_all": {}
  },
  "sort":[
    {
      "price":{
        "order":"desc"
      }
    }
  ]
}

GET /library/books/_search
{
  "query":{
    "match_all": {}
  },
  "sort":[
    {
      "price": {
        "order": "asc"
      }
    }
  ]
}


#------------------------------------------------
#控制范围 
#range 查询:范围查询 
#有 from,to, include_lower,include_upper,boost等参数 #include_lower:是否包含范围的左边界 ,默认是 true
#include_upper:是否包含范围的右边界 ,默认是 true
GET /library/books/_search
{
  "query":{
    "range": {
      "publish_data": {
        "from": "2017-1-1",
        "to": "2017-12-29"
      }
    }
  }
}


GET /library/books/_search
{
  "query": {
    "range": {
      "price": {
        "from": 10,
        "to": 300,
        "include_lower":true,
        "include_upper":false
      }
    }
  }
}

#--------------------------------------------------
#
#wildcard查询 :允许你使用通配符 *和 ?来来进行查询 
# *就就代表一个或多个字符 
# ?仅代表一个字符 
#注意 :这个这个查询很影响性能 
GET /library/books/_search
{
  "query": {
    "wildcard": {
      "preview": "rab*"
    }
  }
}

GET /library/books/_search
{
  "query": {
    "wildcard": {
      "preview": "luc?ne"
    }
  }
}

#--------------------------------------------------
#--------------------------------------------------
#模糊查询 
#value:查询的关键字 
#boost:设置查询的设置查询的权值 ,默认是 1.0
#min_similarity:设置匹配的最小相似度 
#默认值为0.5;对于字符串,取值0-1(包含0和1);对于数值,取值可能大于1;对于日期型,取值为1d,2d,1m这样,1d就代表一天。
#prefix_length:指明区分词项的共同前缀长度,默认是0
#max_expansions:指明查询中的词项可扩展的数目,默认可以无限大。

GET /library/books/_search
{
  "query": {
    "fuzzy": {
      "preview":"rabit"
    }
  }
}

GET /library/books/_search
{
  "query": {
    "fuzzy": {
      "preview": {
        "value": "rabit",
        "min_similarity": 0.5
      }
    }
  }
}

# fuzzy_like_this 查询
# 查询得到与给定内容相似的所有文档
# fileds:字段组,默认是_all
# like_text:设置关键词
# ignore_tf:设置忽略词项的频次,默认是false
# max_query_terns:指明在生成的查询中查询词项的最大数目,默认是25
#min_similarity:指明区分词项最小的相似度,默认是0.5
# perfix_length:指明区分词项共同前缀的长度,默认是0
# boost:设置权值,默认是1.0
# analyze:指明用于分析给定内容的分析器
GET /library/books/_search
{
  "query": {
    "fuzzy_like_this":{
      "fields":["preview"],
      "like_text":"open source software",
      "min_similarity":0.5,
      "prefix_length":0.2
    }
  }
}

# fuzzy_like_this_field 查询
# 制作用在一个字段里
# 其他与fuzzy_like_this功能一样
GET /library/books/_search
{
  "query": {
    "fuzzy_like_this_field": {
      "preview": {
        "like_text": "open source software",
        "min_similarity": 0.5,
        "prefix_length": 0.2
      }
    }
  }
}

#--------------------------------------------------
# more_like_this 查询 

# fields:定义字段组,默认是_all
# like_text:定义要查询的关键词
# percent_terms_to_match:该参数指明一个文档必须匹配多大比例的词项才能被视为相似,默认值是:0.3,意思是30%的比例
# min_terms_freq:该参数指明在生成的查询中查询词项的最大数目,默认是:25
# stop_words:该参数指明将被忽略的单词集合
# min_doc_freq:该参数指明词项应至少在多少个文档中出现才不会被忽略,默认是:5
# max_doc_freq:该参数指明出现词项的最大数目,以避免词项被忽略,默认是无限大
# min_word_len:该参数指明单个单词的最小长度,低于该值的单词将被忽略,默认值是0
# max_word_len:该参数指明单个单词的最大长度,高于该值的单词将被忽略,默认是无限大
# boost_terms:该参数指明提升一个查询的权值,默认是:1.0
# analyer:该参数指明指定用于分析的分析器


GET /library/books/_search
{
  "query": {
    "more_like_this":{
      "fields": ["preview"],
      "like_text":"Apache open source",
      "min_term_freq":1,
      "min_doc_freq":1
    }
  }
}

# more_like_this_field 查询
# 只作用在一个字段里
# 其他与more_like_this功能一样
GET /library/books/_search
{
  "query": {
    "more_like_this_field": {
      "preview": {
        "like_text": "text like this one",
        "min_term_freq": 1,
        "max_query_terms": 12
      }
    }
  }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值