大数据学习39:ElasticSearch 常用查询2
2017-12-29 17:01
429 查看
ES常用查询2
1、子条件查询:特定字段查询所指特定值
Query context
在查询中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配程度。
旨在判断目标文档和查询条件匹配的有多好。
常用查询:
(1)、全文本查询:针对文本类型数据
(2)字段级别查询:针对结构化数据,如数字、日期
2、Filter context
在查询过程中,只判断该文档是否满足条件,只有Yes或者No
filter 一般做过滤,es会对结果进行缓存,相对query会更快,但是要引入bool
3、复合条件查询:以一定的逻辑组合子条件查询
固定分数查询
结果为与
注意:这里 should 匹配的话是模糊匹配,但是 must 的话是精确匹配,例如搜索title的内容,只会去精确匹配 ElasticSearch
1、子条件查询:特定字段查询所指特定值
Query context
在查询中,除了判断文档是否满足查询条件外,ES还会计算一个_score来标识匹配程度。
旨在判断目标文档和查询条件匹配的有多好。
常用查询:
(1)、全文本查询:针对文本类型数据
#模糊匹配1 POST 127.0.0.1:9200/book/_search { "query":{ "match":{ "author":"wxk" } } } #模糊匹配2,查询结果显示 ES 和 入门相关的结果 { "query":{ "match":{ #关键字 "title":"ElasticSearch学习" } } } 结果:只要title 里有 ElasticSearch 或 学习 的都会被搜出来 #phrase 匹配,精确匹配,但是匹配项目是结果的子集 { "query":{ "match_phrase":{ #关键字 "title":"ElasticSearch入门" } } } #多字段查询模糊匹配查询,author和title 包含 wxk { "query":{ "multi_match":{ #关键字 "query":"wxk", "fields":["author","title"] } } } #多条件查询在bool查询中记录 #语法查询 #或语句,全文、模糊搜索 { "query":{ "query_string":{ #关键字 "query":"(ElasticSearch AND 大法) OR Python" } } } #语法查询,查多个字段 { "query":{ "query_string":{ #关键字 "query":"wxk OR ElasticSearch", "fields":["title","author"] } } } #多字段的模糊匹配,可以用 AND 达到目标 { "query":{ "query_string":{ #关键字 "query":"wxk AND ElasticSearch", "fields":["title","author"] } } }
(2)字段级别查询:针对结构化数据,如数字、日期
#结构化查询,查询数字,日期等 { "query":{ "term":{ #关键字 "word_count":1000 } } } #结构化查询,查询文本 { "query":{ "term":{ #关键字 "author":"qsy" } } } #结构化查询,范围查询数字 { "query":{ "range":{ #关键字 "word_count":{ "gte":1000, "lte":2000 } } } } #结构化查询,范围查询日期 { "query":{ "range":{ #关键字 "publish_date":{ "gte":"1990-01-01", "lte":"1990-3-31" # 也可以用 now 关键词 } } } }
2、Filter context
在查询过程中,只判断该文档是否满足条件,只有Yes或者No
filter 一般做过滤,es会对结果进行缓存,相对query会更快,但是要引入bool
#filter 查询 POST 127.0.0.1:9200/book/_search { "query":{ "bool":{ "filter":{ "term":{ "word_count":1000 } } } } }
3、复合条件查询:以一定的逻辑组合子条件查询
固定分数查询
#普通查询: POST 127.0.0.1:9200/_search { "query":{ "match":{ "title":"ElasticSearch" } } } 结果会出现评分,_score #进行固定分数查询:固定分数查询不支持match,只支持filter POST 127.0.0.1:9200/_search { "query":{ "constant_score":{ "filter":{ "match":{ "title":"ElasticSearch" } }, # "boost":2 这里设置 score 为 2 } } } 结果中所有_score 默认都是 1 ,设置boost后为设置的值 #布尔查询 匹配是 或 的关系 { "query":{ "bool":{ "should": [ {"match":{"author":"qsy"}}, {"match":{"title":"ElasticSearch"}} ] } } } 结果为或 #布尔查询 匹配是 与 的关系 { "query":{ "bool":{ "must":[ { "match":{ "author":"qsy" } }, { "match":{ "title":"ElasticSearch" } } ] } } }
结果为与
注意:这里 should 匹配的话是模糊匹配,但是 must 的话是精确匹配,例如搜索title的内容,只会去精确匹配 ElasticSearch
#思考,如何多条件模糊匹配呢? #多字段的模糊匹配,可以用 AND 达到目标 { "query":{ "query_string":{ #关键字 "query":"wxk AND ElasticSearch", "fields":["title","author"] } } } #must,should 组合查询 must,must_not,should每个只能出现一次 { "query": { "bool": { "must": { "match": { "title": "python" }}, "must_not": { "match": { "publish_date": "1990-2-19" }}, "should": [ { "match": { "title": "学习" }}, { "match": { "author": "qsy" }} ] } } } #布尔查询 匹配是 must not 的关系 { "query":{ "bool":{ "must_not":{ "term":{ "author":"wxk" } } } } }
相关文章推荐
- Elasticsearch5.6.1导入数据并通过Kibana5.6.1展示和查询数据案例学习(上篇)
- Elasticsearch学习笔记1----常用查询操作
- CUBRID学习笔记 39 net使用dataset 返回查询的数据
- MySQL学习小结:MySQL常用数据类型、常用MySQL查询语句
- ElasticSearch学习问题记录——nested查询不到数据
- Elasticsearch学习记录(1.安装,简单的查询,聚合,防止数据重复,冲突控制等)
- 大数据学习38:ElasticSearch 基础和常用命令-增删改查
- ORACLE用户常用数据字典的查询
- Jim's游戏外挂学习笔记4——查找怪数据数组的内存分布和地址
- ORACLE用户常用数据字典的查询使用方法
- Oracle用户常用数据字典查询
- Oracle用户常用数据字典查询
- Jim's游戏外挂学习笔记4—查找怪数据数组的内存分布和地址
- ORACLE用户常用数据字典的查询方法
- ORACLE用户常用数据字典查询
- bos常用数据的查询方法
- 学习:SharePoint 使用 SPQuery.Folder 查询文件夹中的数据(转)
- [外挂学习]Jim's游戏外挂学习笔记3——继续找当前地图数据和所处坐标存放的地址
- Oracle基础学习二:表的创建 数据的操作 在VS程序中的查询显示
- Oracle常用数据字典查询