高级查询query
子条查询 特定字段查询所有特定值
子条件查询(Query context Filter context)两种查询方式
1)Query context:
在查询过程中,除了判断文档是否满足查询条件之外,es还会计算一个_score来标识匹配的程度,旨在判断目标文档和查询条件匹配的有多好(吻合度)。
常用查询:
全文本查询 针对文本类型数据
字段级别查询 针对结构化数据,如数字,日期等
1.全文本查询:
127.0.0.1/book/_search { "query"{ //关键词 "match":{ //模糊查询关键词 "author":"瓦力" } } } 模糊查询问题(不精确) match_phrase //短语句匹配(完全匹配) { "query"{ //关键词 "match_phrose":{ //模糊查询关键词 "author":"瓦力" } } }
完全匹配可能比较严,我们会希望有个可调节因子,少匹配一个也满足,那就需要使用到slop。
{ "query": { "match_phrase": { "content" : { "author" : "我的宝马多少马力", "slop" : 1 } } } }
多个匹配查询(multi_match)
{ "query": { "multi_match": { "query" : "我的宝马多少马力", //query信息,要查询的数据,比如要查询(我的宝马多少马力) "fields" : ["title", "content"] //指定查询的字段,关系为或 } } }
语法查询(query_string)
{ "query_string":{ "query": "aaaa"//指定的查询内容关键词 } }
查询多个数据
{ "query_string":{ "query": "(aaaa) OR python"//指定的查询内容关键词,查询aaa或者python的关键词 } }
查询多个字段
{ "query_string":{ "query": "aaaa OR python"//指定的查询内容关键词,查询aaa或者python的关键词 "field":["title","author"]//指定查询的字段 } }
2.结构化的查询:
{ "query":{ "term":{//关键词,具体象 "word_count":1000 //例如字段字数在某个特定值的数值 } } }
范围查询:
{ "query":{ "range":{//关键词,范围 "word_count":1000 //指定例如字段word_count字数在某个范围的数值 "get":1000 //大于等于1000 ge 等于 "lte":2000 //小于等于2000 如时间,2000改为now这个关键词 } } }
条件查询 以一定的逻辑组和子条件查询