【发布时间】:2017-10-13 23:23:50
【问题描述】:
我正在使用 Elastica 的查询构建器为 ElasticSearch(5.3 版)创建查询
我在特定索引和类型中索引了大约 1600 个文档,
当我在查询中使用空字符串在该索引中执行搜索时,我只得到大约 440 次点击,
生成的查询是:
{
"query": {
"bool": {
"should": [{
"multi_match": {
"query": "",
"fields": ["<field_1>^5", "<field_2>^4", "<field_3>^1", "<field_4>^2"],
"fuzziness": "AUTO"
}
}]
}
},
"from": 0,
"size": 20,
"aggs": {
"<agg_name_1>": {
"terms": {
"field": "<agg_field_1>"
}
},
"<agg_name_2>": {
"terms": {
"field": "<agg_field_2>"
}
},
"<agg_name_3>": {
"terms": {
"field": "<agg_field_3>"
}
},
"<agg_name_4>": {
"terms": {
"field": "<agg_field_4>"
}
},
"<agg_name_5>": {
"terms": {
"field": "<agg_field_5>"
}
},
"<date_agg_name>": {
"date_range": {
"field": "<agg_field_date_1>",
"keyed": true,
"ranges": [{
"from": "now\/d",
"key": "NOW\/DAY TO *"
}, {
"from": "now-2d\/d",
"key": "NOW\/DAY-2DAY TO *"
}, {
"from": "now-7d\/d",
"key": "NOW\/DAY-7DAY TO *"
}, {
"from": "now-30d\/d",
"key": "NOW\/DAY-30DAY TO *"
}]
}
},
"<agg_name_integer>": {
"range": {
"field": "<agg_field_integer>",
"keyed": true,
"ranges": [{
"to": 1,
"key": "1"
}, {
"to": 2,
"key": "2"
}, {
"to": 3,
"key": "3"
}, {
"to": 4,
"key": "4"
}, {
"to": 5,
"key": "5"
}]
}
}
}
}
我认为既然查询是空字符串,它应该匹配所有文档,但为什么它只匹配文档的一个子集?我也试过把should改成must,但是没有区别。
是因为multi_match吗?或fuzziness?或fields ?
P。 S.字段的实际名称被更改并替换为占位符。
【问题讨论】:
-
什么 ES 版本?
-
@AndreiStefan 5.3 ,将编辑并添加到问题中。
-
我对此进行了测试,但没有收到任何文件。您如何将查询发送到 ES?
-
@AndreiStefan 我正在使用
ruflin/elastica构建查询并发送查询。如果我把代码放在问题中会有帮助吗? -
@AndreiStefan:和我一样..
标签: elasticsearch