友情提示:本文共有 2653 个字,阅读大概需要 6 分钟。
前言之前谈过 Elasticsearch 的基本概况,还有服务端和客户端的安装和使用,这一篇该到重点了---查询语句。正所谓--无搜索,无Elasticsearch,至少,我是这么认为的。那么,ES的搜索语句有哪些呢?其实,它们比你想象中的多!一.全文本查询1) 例如:查询全部数据,按number顺序排序,并从第11条开始,取10条GET /demo/_search(为方便展示,除特别表示,以下皆用此样例做请求接口){"query":{"match_all":{ } },"sort":[ {"number":"asc" } ],"from":10,"size":10}2)单字段查询,例子:查询query_field里含有value全部或部分字符串的数据{"query":{"match":{"query_field":"value" } }}3)单字段查询,例子:完全匹配value值{"query":{"match_phrase":{"query_field":"value" } }}4)多字段模糊匹配查询,例:在country和name两个字段里模糊匹配value值{"query":{"multi_match":{"query":"value","fields":["country","name" ] } }}5)语法查询,组合and or 等逻辑词,例:{"query":{"query_string":{"query":"(China AND Ada) OR 18" } }}可以指定字段:{"query":{"query_string":{"query":"Chine OR Ada","fields":["country","name" ] } }}二。字段级查询1)字段查询,例:查询age字段为18的数据 (term是完全匹配检索, 要用在不分词的字段上, 如果某个field在映射中被分词了, term检索将不起作用.所以, 不分词的field, 要在mapping中设置为 false,即 indes ->false ){"query":{"term":{"age":18 } }}2) terms 检索,terms,相当于多个term检索, 类似于SQL中in关键字的用法, 即在某些给定的数据中检索,例:{"query":{"terms":{"keyword":["Java编程思想","Java并发编程的艺术" ] } }}3)范围查询,例:查age字段大于等于18,小于30的数据{"query":{"range":{"age":{"gte":18,"lt":30 } } }}三。其他复合查询1)主要是bool查询,条件有should、must、must_not等,可以组合filter。例子1:name字段模糊匹配test,或country字段模糊匹配China,并筛选出age字段大于18 的数据{"query":{"bool":{"should":[ {"match":{"name":"test" } }, {"match":{"country":"China" } } ],"filter":[ {"range":{"age":{"gt":18 } } } ] } }}例子2:在所有数据里(一般默认最多出来10000条,可配置),查询余额大于2万小于3万的数据{"query":{"bool":{"must":{"match_all":{ } },"filter":{"range":{"balance":{"gte":20000,"lte":30000 } } } } }}例子3. boost评分权重 - 控制文档的优先级别通过boost参数, 令满足某个条件的文档的得分更高, 从而使得其排名更靠前.例:{"query": {"bool": {"must": [ { "match": { "name": "编程秘籍"} } ], "should": [ { "match": { "name": {"query": "艺术", "boost": 2// 提升评分权重 } } } ] } }}2)多重查询,例:POST /_msearch{"index":"my_test1"}{"query":{"match_all":{}}}{"index":"my_test2"}{"query":{"match":{"name":"张三"}}}3)异步查询,例:POST /demo_index/_async_search?size=0{"sort":[ {"date":{"order":"asc" } } ],"aggs":{"sale_date":{"date_histogram":{"field":"date","calendar_interval":"1d" } } }}至此,关于ES的搜索语句就介绍到这里了,下回该讲讲别的了吧~
本文如果对你有帮助,请点赞收藏《Elasticsearch查询语句 远比你想象的多》,同时在此感谢原作者。