# 指定index名以及type名的搜索 GET /library/books/_search?q=title:elasticsearch # 指定index名没有type名的搜索 GET /library/_search?q=title:mongodb # 既没有index名也没有type名的搜索 GET /_search?q=title:elasticsearch #------------------------------------------------ # term查询 # term查询:查询某字段里有某个关键词的文档 GET /library/books/_search { "query": { "term": { "preview": "elasticsearch" } } } # terms查询:查询某个字段里有多个关键词的文档 # minimum_match:最小匹配集;1 说明两个关键词里最少有一个,2 就说明文档里这两个关键词都得存在 GET /library/books/_search { "query": { "terms": { "preview": ["elasticsearch","book"], "minimum_match": 2 } } } #------------------------------------------------ # 控制查询返回的数量 # 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": { "query": "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","title"], "query": { "match": { "preview": "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": {} } } #------------------------------------------------ # 排序 # 通过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": { "from" : "11", "to" : "20", "include_lower" : true, "include_upper" : true } } } } #------------------------------------------------ # # 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": "rabit", "min_similarity" : 0.5 } } } } # fuzzy_like_this 查询 # 查询得到与给定内容相似的所有文档 # fileds : 字段组,默认是_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 # 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": "Apache open source", "min_term_freq" : 1, "min_doc_freq" : 1 } } } }