ElasticSearch的DSL查询语法解析
2024-01-02 16:44:28
Elasticsearch提供了基于ISON的DSL (Domain Specific Lanquage)来定义查询。
目录
3.1 match查询:会对用户输入内容分词,常用于搜索框搜索 ,语法:
3.2 multi match查询:与match查询类似,只不过允许同时查询多个字段,语法:
?5.1 geo_bounding_box:查询geo point值落在某个矩形范围的所有文档
?编辑?5.2 geo_distance:查询到指定中心点小于某个距离值的所有文档
?
一、常见查询类型
- 查询所有:查询出所有数据,一般测试用。
????????例如:match all?
- 全文检索 (full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。
????????例如:?match_query、multi_match_query
- 精确查询:根据精确词条值查找数据,一般是查找keyword、数值、日期、boolean等类型字段。
????????例如:ids、range、term
- 地理 (geo)查询:根据经纬度查询。
????????例如:geo_distance、geo_bounding_box
- 复合 (compound)查询:复合查询可以将上述各种查询条件组合起来,合并查询条件。
????????例如:bool、function_score
二、DSLQuery基本语法?
查询DSL的基本语法是什么?
- GET /索引库名/_search
- { "query" : { "查询类型" : { "FIELD" : "TEXT" } } }
三、全文检索查询
3.1 match查询:会对用户输入内容分词,常用于搜索框搜索 ,语法:
3.2 multi match查询:与match查询类似,只不过允许同时查询多个字段,语法:
match 和 multi match 的区别是什么?
- match:根据一个字段查询
- multi match:根据多个字段查询,参与查询字段越多,查询性能越差?
四、精确查询?
精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以不会对搜索条件分词。常见的有:
- term:根据词条精确值查询
- range:根据值的范围查询
精确查询常见的有哪些?
- term查询:根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段
- range查询:根据数值范围查询,可以是数值、日期的范围
五、地理查询
根据经纬度查询。常见的使用场景包括:?
?5.1 geo_bounding_box:查询geo point值落在某个矩形范围的所有文档
?5.2 geo_distance:查询到指定中心点小于某个距离值的所有文档
六、复合查询
实现更复杂的搜索逻辑,例如:复合(compound)查询:复合查询可以将其它简单查询组合起来。
fuction score:算分函数查询,可以控制文档相关性算分,控制文档排名。
elasticsearch中的相关性打分算法是什么?
- TF-IDF:在elasticsearch5.0之前,会随着频增加而越来越大
- BM25:在elasticsearch5.0之后,会随着词频增加而增大,但增长曲线会趋于水平
文章来源:https://blog.csdn.net/m0_60769905/article/details/135341537
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!