python - elasticsearch查询返回多于命中
问题描述
我下面的索引 python 文件
应该有 7 个匹配基于真实数据的查询,但它会不断产生 10 个结果。因为默认大小参数是 10 有没有办法让它产生与点击次数一样多的命中而不是大小?还是我必须预测大小并一直将其放入查询中?
结果:
也许与我如何索引它有关?idk 为什么点击总数是 26639。它应该像 7 一样匹配。
from elasticsearch import helpers, Elasticsearch
from datetime import datetime
import csv
import json
es = Elasticsearch()
with open('result.csv', encoding='utf-8') as f:
reader = csv.DictReader(f)
helpers.bulk(es, reader, index='hscate', doc_type='my-type')
res = es.search(index = 'hscate',
doc_type = 'my-type',
# size ='1000',
#from_=0,
body = {
'query': {
'match' : {
'name' : '추성훈의 코몽트 기모본딩바지 3+1종_총 4종'
}
}
})
print(len(res['hits']['hits']))
with open('mycsvfile.csv', 'w',encoding='utf-8',newline='') as f: # Just use 'w' mode in 3.x
header_present = False
for doc in res['hits']['hits']:
my_dict = doc['_source']
if not header_present:
w = csv.DictWriter(f, my_dict.keys())
w.writeheader()
header_present = True
w.writerow(my_dict)
解决方案
正如您所怀疑的那样,我认为 elasticsearch 只会为您生成 10 个结果,这取决于它们在您的数据中匹配它们时产生的排名。
试试这个:
body = {
'from': 0,
'size': 1,
'query': {
'bool': {
'must': [
{
'match': {
'Category' : 'category name',
}
},
{
'match' : {
'name' : 'product name'
}
}
]
}
}
}
来源:https ://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-from-size.html
推荐阅读
- java - Stage.setScene() 似乎忽略了 maxHeight/Width 设置
- .htaccess - 未应用 nginx 服务器上的重写规则
- javascript - 将用户 HTML 输入作为 javascript 函数参数传递
- javascript - Antd横向子菜单“浮动”
- google-cloud-platform - 将表从 BigQuery 导出到 GCS 的最佳方式
- angular - 为什么我不能在速记 CSS 网格属性上使用 @HostBinding?
- python - Choropleth 地图 - AttributeError:“NoneType”对象没有属性“get”
- android - Android 的 Crashlytics 报告被 Proguard 和 Proguard 映射设置混淆了
- facebook - 解码 facebook 的 blob 视频 url(第二部分)
- python - 烧瓶应用程序启动后如何执行任务?