赞
踩
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
}
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。