18. python-es-8.3.3-抽样聚合sampler

本文档展示了如何利用Elasticsearch进行数据检索,并通过sampler聚合来获取评分最高的文档。示例中,从名为'es_sampler'的索引中,基于'name'字段进行了查询和聚合操作,寻找包含'hello'或'good'的文档,然后使用sampler聚合限制每个分片的返回结果数量,进一步通过significant_terms聚合找出重要的关键词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。-侯氏工坊

文章目录

  • 抽取评分最高的n个文档

sampler

from elasticsearch import Elasticsearch
import urllib3

urllib3.disable_warnings()

# PUT es_sampler
# {
#   "mappings": {
#     "properties": {
#       "name": {"type": "keyword"}
#     }
#   }
# }

# POST es_sampler/_bulk
# {"index": {"_id": 1}}
# {"name": "hello"}
# {"index": {"_id": 2}}
# {"name": "good"}
# {"index": {"_id": 3}}
# {"name": "es"}
# {"index": {"_id": 4}}
# {"name": "elastic"}
# {"index": {"_id": 5}}
# {"name": "es"}
# {"index": {"_id": 6}}
# {"name": "good"}

# GET es_sampler/_search
# {
#   "query": {"query_string": {
#     "default_field": "name",
#     "query": "name:hello OR name:good"
#   }},
#   "size": 0,
#   "aggs": {
#     "my_sampler": {
#       "sampler": {
#         "shard_size": 100
#       },
#       "aggs": {
#         "my_significant_terms": {
#           "significant_terms": {
#             "field": "name",
#             "min_doc_count": 1
#           }
#         }
#       }
#     }
#   }
# }

# 创建es实例
es = Elasticsearch("https://192.168.2.64:9200",
				   verify_certs=False,
				   basic_auth=("elastic", "MuZkDqdW--VsfDjTcoex"),
				   request_timeout=60,
				   max_retries=3,
				   retry_on_timeout=True,
				   node_selector_class="round_robin")

# 刷新
es.indices.refresh(index="es_sampler")

query = {"query_string": {
    "default_field": "name",
    "query": "name:hello OR name:good"
  }}
sampler = {
    "my_sampler": {
      "sampler": {
        "shard_size": 100
      },
      "aggs": {
        "my_significant_terms": {
          "significant_terms": {
            "field": "name",
            "min_doc_count": 1
          }
        }
      }
    }
  }

resp = es.search(index="es_sampler", size=0, query=query, aggregations=sampler)

print(resp['aggregations']['my_sampler'])
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这是谁的博客?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值