美文网首页Elasticsearch
Elasticsearch 基本查询

Elasticsearch 基本查询

作者: 菜花_Q | 来源:发表于2018-04-24 13:52 被阅读53次

查询

Elasticsearch是功能非常强大的全文搜索引擎,用它的目的就是为了能快捷的查询你想要的数据

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

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

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

Elasticsearch查询的过程:通过匹配条件,把索引里面分析好的结果提取的过程,索引的分析依靠分词器,通过分词器可以将索引中的字符串词条化,通过Elasticsearch设定好的查询语句,给定关键词和相关的过滤条件,就能拿到我们想要的结果。

测试内容(未整理)

基本查询

term,terms查询

from,size

返回版本号_version

match 查询

升序降序

prefix前缀匹配查询

range范围查询

wildcard通配符查询

fuzzy模糊查询

more_like_this & more_like_this_field查询

#查看测试数据

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名的搜索

GET /library/books/_search?q=title:elasticsearch

#指定index名没有type名的搜索

GET /library/_search?q=title:mongodb

#既没有index名也没有type名的搜索

GET /_search?q=title:elasticsearch

#搜索结果内容介绍

#_source:文档具体内容

#_score:分数,Elasticsearch给查询的结果打分

#max_score:最高分

#term查询

#term查询:查询某字段里有某个关键词的文档

GET /library/books/_search

{

    "query": {

        "term": {

            "preview": "elasticsearch"

        }

    }

}

#term查询:查询某字段里有多个关键词的文档

#minimum_match: 最小匹配集;1 说明两个关键词里最少有一个,2 就说明文档里这两个关键词都得存在。

GET /library/books/_search

{

    "query": {

        "term":{

                "preview": ["elasticsearch","book"],

                "minimum_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": {

            "preview":"elasticsearch"

        }

    }

}

GET /library/books/_search

{

    "query":{

        "match": {

            "price":11

        }

    }

}

#通过match_all查询

#查询指定索引下的所有文档

GET /library/books/_search

{

    "query": {

        "match_all": {}

    }

}

#通过match_phrase查询

#短语查询,slop定义的是关键词之间隔多少未知单词

GET /library/books/_search

{

    "query": {

        "match_phrase": {

            "preview":{

                "Elasticsearch, distributed",

                "slop": 2

            }

        }

    }

}

#multi_match查询

#可以指定多个字段

#比如查询title和preview这两个字段里都包含Elasticsearch关键词的文档

GET /library/books/_search

{

    "query":{

        "multi_match": {

            "query": "Elasticsearch",

            "fields": ["title","preview"]

        }

    }

}

#指定返回字段

#注意只能返回store为yes的字段

GET /library/books/_search

{

    "fields": ["preview"],

    "query": {

        "match": {

            "preview": "elasticsearch"

        }

    }

}

通过partial_fields控制加载的字段

GET /library/books/_search

{

    "partial_fields":{

            "partial":{

                "include": ["preview"],

                "exclude":["tittle,price"]

            }

    },

    "query": {

        "match_all":{}

    }

}

#还能加通配符 *

GET /library/books/_search

{

    "partial_fields":{

        "partial":{

            "include": ["pri*"]

            "exclude": ["tit*"]

        }

    },

    "query":{

        "match_all":{}

    }

}

#排序

#通过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"

            }

        }

    ]

}

#prefix 前缀匹配查询

GET /library/books/_search

{

    "query": {

        "prefix": {

            "title":{

                "value": "r"

            }

        }

    }

}

#控制范围

#range 查询:范围查询

#有from,to,include_lower,include_upper,boost 这些参数

# include_lower: 是否包含范围的左边界,默认是true

#include_upper: 是否包含范围的右边界,默认是true

GET /library/books/_search

{

    "query":{

        "range": {

            "publish_date": {

                "from": "2015-01-01",

                "to":"2015-06-30"

            }

        }

    }

}

GET /library/books/_search

{

    "query": {

        "range": {

            "price":{

            }

        }

    }

}

GET /library/books/_search

{

    "query": {

        "range":{

            "price": {

                "from":"10",

                 "to":"20",

                "include_lower": true,

                "include_upper": false

            }

        }

    }

}

#wildcard查询:允许你使用通配符 * 和 ? 来进行查询

# * 就代表一个或多个字符

# ?仅代表一个字符

#注意:这个查询很影响性能

GET /library/books/_search

{

    "query": {

        "wildcard": {

            "preview":"rab*"

        }

    }

}

GET /library/books/_search

{

    "query": {

        "wildcard": {

            "preview": "luc?ne"

        }

    }

}

#fuzzy 模糊查询

#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": "rabbit",

                "min_similarity": 0.5

            }

        }

    }

}

#fuzzy_like_this查询

#查询得到与给定内容相似的所有文档

#fields: 字段组,默认是_all

#like_text: 设置关键词

#ignore_tf: 设置忽略词项的频次,默认是false

#max_query_terns:指明在生成的查询中查询词项的最大数目,默认是25

#min_similarity:指明区分词项最小的相似度,默认是0.5

#prefix_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_term_freq: 该参数指明在生成的查询中查询词项的最大数据,默认是25

#stop_words:该参数指明将被忽略的单词集合

#min_doc_freq:该参数指明词项应至少在多少个文档中出现才不会被忽略。默认是5

#max_doc_freq:该参数指明出现词项的最大数目,以避免词项被忽略,默认是无限大

#min_word_len:该参数指明单个单词的最小长度,低于该值的单词将被忽略,默认值是0

#max_word_len:指明单个单词的的最大长度,高于该值的单词将被忽略,默认是无限大

#boost_terms:该参数指明提升每个单词的权重时使用的权值,默认是1

#boost: 指明提升一个查询的权值,默认是1.0

#analyzer:指定用于分析的分析器

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": "Apache open source",

                "min_term_freq": 1,

                "min_doc_freq":1

            }

        }

    }

}

相关文章

网友评论

    本文标题:Elasticsearch 基本查询

    本文链接:https://www.haomeiwen.com/subject/dekdlftx.html