Firebase 奇怪的输出查询弹性搜索
我刚开始使用弹性搜索。我把一切都安排好了。我正在使用Firebase++弹性搜索 在我的前端,我基于不同的搜索参数构建查询。我将它们插入FirebaseFirebase 奇怪的输出查询弹性搜索,firebase,elasticsearch,Firebase,elasticsearch,我刚开始使用弹性搜索。我把一切都安排好了。我正在使用Firebase++弹性搜索 在我的前端,我基于不同的搜索参数构建查询。我将它们插入Firebase/search/requests/中的一个节点。手电筒将拾取此信息并将响应放入/search/response,这就像一个符咒 但是,我不确定如何正确编写查询。当我尝试组合两个必须匹配查询时,得到了奇怪的结果。我正在使用查询DSL 我在可交付成果/doc下弹性搜索的文档具有以下方案 ... { "createdBy" : "admin@xx.
/search/requests/
中的一个节点。手电筒将拾取此信息并将响应放入/search/response
,这就像一个符咒
但是,我不确定如何正确编写查询。当我尝试组合两个必须
匹配
查询时,得到了奇怪的结果。我正在使用查询DSL
我在可交付成果/doc
下弹性搜索的文档具有以下方案
...
{
"createdBy" : "admin@xx.org",
"createdOn" : 1501200000000,
"deadLine" : 1508716800000,
"description" : {
"value" : "dummy description"
},
"key" : "<FBKEY>",
"programmes" : [ {
"code" : "95000",
"name" : "Test programme",
"programYear" : 2017
} ],
"projects" : [ {
"projectCode" : "113200",
"projectName" : "Test project",
"projectYear" : 2017
} ],
"reportingYear" : 2017,
"status" : "Open",
"type" : "writing",
"updatedBy" : "admin@xx.org",
"updatedOn" : 1501200000000,
},
...
在我的输出中,我也得到了没有这两个字段的文档?他们的分数也很低。这正常吗
我的贴图,使用闪光灯自动创建
更新1
我刚刚尝试了这个查询,但是它仍然会给我奇怪的结果,因为没有对两个字段进行过滤:
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"match": {
"programmes.code": "890000"
}
},
{
"match": {
"createdBy": "admin@xx.org"
}
}
]
}
}
}
}
}
bool查询
中使用的must
子句在查询上下文中执行(所有文档按分数降序返回),并对分数作出贡献
如果希望将其作为筛选器执行,请使用以下查询:
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"match": {
"createdBy": "xx@company.org"
}
},
{
"match": {
"programmes.code": "95000"
}
}
]
}
}
}
}
}
注意:
默认情况下,字符串字段已分析,请将字符串字段的映射更新为
未分析
,以使用过滤器
查询。请参阅:我刚刚尝试了这个查询,但是由于没有对两个字段进行过滤,它仍然会给我奇怪的结果。请参阅start postOne修改中的更新。您可以做的是将match
替换为term
,这样它就不会分析字段。如果将match
替换为term
我会得到零结果吗?如果我过滤节目.code
它会工作。但不知何故,与程序.code
和createdBy
(与其他组合相同)的组合不起作用。组合不起作用意味着没有同时满足这两个条件的文档。请注意,must
执行布尔值和
,您可能正在查找的是一个should
子句,如果满足任何一个条件,该子句将返回。问题在于映射。默认情况下,将分析字符串字段。因此你会得到奇怪的结果。如果将这些字段的映射更新为“未分析”,则可以使用筛选器查询来获得正确的结果。查看此项了解更多详细信息:
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"match": {
"createdBy": "xx@company.org"
}
},
{
"match": {
"programmes.code": "95000"
}
}
]
}
}
}
}
}