gpt4 book ai didi

firebase - 奇怪的输出查询 Elasticsearch

转载 作者:行者123 更新时间:2023-12-02 22:57:46 24 4
gpt4 key购买 nike

我刚开始使用 flex 搜索。我已经正确设置了所有设置。我正在使用Firebase + Flashlight + flex 搜索。

在前端,我基于不同的搜索参数构建查询。我将它们插入Firebase /search/requests/中的节点中。 Flashlight会捡起来并将响应放入/search/response,这就像一个魅力!

但是,我不确定如何正确编写查询。当我尝试合并两个must match查询时,我得到奇怪的结果。我正在使用查询DSL。

我在deliverables/doc下的Elastic Search中的文档具有以下方案。

...
{
"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,
},
...

我的查询具有以下结构。
{
"query": {
"bool": {
"must": [
{
"match": {
"createdBy": "xx@company.org"
},
"match": {
"programmes.code": "95000"
}
}
]
}
}
}

在我的输出中,我还得到了不完全具有这两个字段的文档?他们的分数也很低。这正常吗?

我的 map ,使用Flashlight自动创建

enter image description here

更新1

我只是尝试了此查询,但是通过不对两个字段进行过滤,它仍然给我带来奇怪的结果:
   {
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"match": {
"programmes.code": "890000"
}
},
{
"match": {
"createdBy": "admin@xx.org"
}
}
]
}
}
}
}
}

最佳答案

must中使用的bool query子句在查询上下文中执行(所有文档均按得分的降序排列)并有助于得分。 see link

如果希望将其作为过滤器执行,请使用以下查询:

{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
{
"match": {
"createdBy": "xx@company.org"
}
},
{
"match": {
"programmes.code": "95000"
}
}
]
}
}
}
}
}

注意:

默认情况下,将分析字符串字段,将字符串字段的映射更新为 not_analyzed,以使用 filter查询。引用: mapping-intro

关于firebase - 奇怪的输出查询 Elasticsearch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46152792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com