es 吗 查询必须有sort_ElasticSearch DSL之From/Size,Sort

本文介绍了Elasticsearch (ES) 中的DSL查询,包括如何使用From/Size进行分页,以及Sort的多种排序方式,如按字段、数组、嵌套字段和地理位置排序。From参数定义结果的起始偏移,Size设置返回的最大数量。Sort支持字段上的升序和降序排序,还支持数组字段的多种排序模式,如平均值、最小值等。此外,文章还讲解了地理位置排序,允许按照距离进行排序,并解释了相关参数的含义。
摘要由CSDN通过智能技术生成

从这篇文章开始,我们要进入DSL的学习。

使用url搜索仅仅是个开始,ES还提供带有查询DSL的请求体用于更高级的搜索。在这些类型的搜索中有大量可选项,可以混合和匹配不同的选项以获得所需的结果。

DSL还能根据查询子句的过滤和查询上下文,使用筛选器的子句以布尔形式测试Document是否匹配筛选器。过滤器通常也比查询快,但是查询也可以根据Document与查询的匹配程度来计算score。

From/Size

分页可以说是最常用的一个功能了,在ES里通过使用From/Size实现结果分页。from参数定义了要获取的第一个结果的偏移量,size参数允许配置要返回的最多命中数量。

虽然可以将from和size设置为请求参数,但它们也可以在搜索体中设置。从默认值到0,大小默认值10:

GET http://localhost:9200/orders/_search

{

"from" : 0, "size" : 20,

"query" : {

"term" : { "name" : "phone" }

}

}

Sort

与分页几乎绑在一起的还有排序,ES允许在特定字段上添加一个或多个排序,每种排序也可以倒序。常见的asc和desc就不多说了,ES支持按数组或多值字段排序。mode选项控制选择哪个数组值来排序它所属的Document。mode选项可以有以下值:

1.min:选择最小值。

2.max:选择最大值。

3.sum:使用所有值的和作为排序值(只适用于基于数字的数组字段)。

4.a

下面是一个使用elasticsearch_dsl库的Python示例,用于执行基本的搜索操作: ```python # 导入所需的库和模块 from elasticsearch_dsl import connections, Search, Q # 创建与Elasticsearch集群的连接 connections.create_connection(hosts=['192.168.214.131'], port=9200, http_auth="elastic:ellischen") # 创建一个Search对象,并指定索引名称 search = Search(using=connections.get_connection(), index='books') # 构建查询条件 query = Q('match_all') # 设置查询条件 search = search.query(query) # 设置排序方式 search = search.sort('_id') # 执行搜索操作 response = search.execute() # 输出搜索结果 for hit in response: print(hit) ``` 这个示例首先使用`create_connection`方法创建与Elasticsearch集群的连接。然后,它创建一个`Search`对象,指定要搜索的索引名称。接下来,使用`Q`对象来构建查询条件,这里使用了`match_all`查询,表示匹配所有文档。然后,使用`sort`方法设置排序方式,这里按`_id`字段进行升序排序。最后,使用`execute`方法执行搜索操作,并迭代搜索结果进行输出。 请注意,你需要根据你的实际环境修改连接参数和索引名称。还可以根据需要添加其他的查询条件和排序方式。 希望这个示例对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python elasticsearch_dsl search_after翻页](https://blog.csdn.net/weixin_43632687/article/details/126404629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值