首先预览一下ES的几种查询方式: 1、模糊匹配 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:match 以上篇文章中book索引为例,模糊匹配title字段: { "query":{ "match":{ "title":"ElasticSearch入门" } } } 匹配结果: 从结果中可以看出ES的模糊匹配是分词模糊匹配,我们输入“ElasticSearch入门”,只要含有“入门”和“ElasticSearch”的数据全都匹配出来了。那如果我们想要实现mysql的那种模糊匹配怎么做呢?我们可以用其余匹配。 2、其余匹配 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:match_phrase { "query":{ "match_phrase":{ "title":"ElasticSearch入门" } } } 匹配结果: 此时便做到了mysql中的模糊匹配。 3、多个字段查询 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:multi_match { "query":{ "multi_match":{ "query":"王宝宝", "fields":["author","title"] } } } 匹配结果: title和author只要是包含“王宝宝”的数据都查询出来。 4、语法查询 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:query_string { "query":{ "query_string":{ "query":"(ElasticSearch and python) or 王宝宝" } } } 所有字段只要包含 ElasticSerach python 王宝宝数据的都查询出来。 5、字段级别查询 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:term { "query":{ "term":{ "word_count":4000 } } } 查询结果为word_count=4000的数据。 6、范围查询 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:range { "query":{ "range":{ "word_count":{ "gte":1000, "lte":2000 } } } } 结果为查询1000到2000字数的书籍,gte:大于等于 gt:大于 lte:小于等于 lt:小于。 7、Filter context查询 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:bool、filter Filter和上面的几种Query查询的区别: 1、Filter匹配结果只有Yes 或 No。Query除了查询数据外,还会对数据结果进行分数评估,计算命中率。 2、Filter顾名思义就是过滤数据,同时还会对数据做缓存,所以比Query速度要快一些。 { "query":{ "bool":{ "filter":{ "term":{ "word_count":1000 } } } } } 8、固定分数查询 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:constant_score、boost ES的查询结果中会有_score的分数,通过固定分数查询,可以筛选指定的分数。 { "query":{ "constant_score":{ "filter":{ "match":{ "title":"ElasticSearch" } }, "boost":2 } } } 9、布尔查询 restful API格式:http://localhost:9200/索引/_search 请求格式:POST 关键词:bool、should 匹配所有author=王宝宝 或者 title=ElasticSearch的数据 { "query":{ "bool":{ "should":[ { "match":{ "author":"王宝宝" } },{ "match":{ "title":"ElasticSearch" } } ] } } } 匹配所有author=王宝宝 并且 title=ElasticSearch的数据: 关键词:must { "query":{ "bool":{ "must":[ { "match":{ "author":"王宝宝" } },{ "match":{ "title":"ElasticSearch" } } ] } } } 匹配author != 王宝宝的数据: 关键词:must_not { "query":{ "bool":{ "must_not":[ { "match":{ "author":"王宝宝" } } ] } } } --------------------- 作者:花群子 来源:CSDN 原文:https://blog.csdn.net/wenwen513/article/details/84887804 版权声明:本文为博主原创文章,转载请附上博文链接!