根据字段值提升过滤查询

时间:2015-06-04 04:11:25

标签: elasticsearch

我有以下过滤后的查询,并希望使用custom_score查询或custom_filters_score查询来根据特定字段值提升结果。但是,我遇到的错误如下:

No query registered for [custom_filters_score]]; 
No query registered for [custom_score]]; 

我哪里错了?任何帮助非常感谢!

以下是查询:

{
"query": {
    "custom_score": {
        "query": {
            "filtered": {
                "query": {
                    "bool": {
                        "should": [
                            {
                                "constant_score": {
                                    "query": {
                                        "match": {
                                            "question": {
                                                "query": "diabetes"
                                            }
                                        }
                                    },
                                    "boost": 1
                                }
                            },
                            {
                                "dis_max": {
                                    "queries": [
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "match": {
                                                        "question": {
                                                            "query": "diabetes"
                                                        }
                                                    }
                                                },
                                                "boost": 0.01
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "match": {
                                                        "answer_text": {
                                                            "query": "diabetes"
                                                        }
                                                    }
                                                },
                                                "boost": 0.0001
                                            }
                                        }
                                    ]
                                }
                            },
                            {
                                "dis_max": {
                                    "queries": [
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "match_phrase": {
                                                        "question_phrase": {
                                                            "query": "what is diabetes",
                                                            "slop": 0
                                                        }
                                                    }
                                                },
                                                "boost": 100
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "match_phrase": {
                                                        "question_phrase": {
                                                            "query": "what is diabetes",
                                                            "slop": 1
                                                        }
                                                    }
                                                },
                                                "boost": 50
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "match_phrase": {
                                                        "question_phrase": {
                                                            "query": "what is diabetes",
                                                            "slop": 2
                                                        }
                                                    }
                                                },
                                                "boost": 33
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "match_phrase": {
                                                        "question_phrase": {
                                                            "query": "what is diabetes",
                                                            "slop": 3
                                                        }
                                                    }
                                                },
                                                "boost": 25
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "question_group_four",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 0.1
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "question_group_five",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 0.15
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_no_synonyms_20",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 35
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_no_synonyms_15",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 25
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_no_synonyms_10",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 15
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_20",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 28
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_15",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 16
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_10",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 13
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_05",
                                                        "query": "what__is__diabetes"
                                                    }
                                                },
                                                "boost": 4
                                            }
                                        }
                                    ]
                                }
                            },
                            {
                                "dis_max": {
                                    "queries": [
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "question_group_four",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 0.1
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "question_group_five",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 0.15
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_no_synonyms_20",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 35
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_no_synonyms_15",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 25
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_no_synonyms_10",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 15
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_20",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 28
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_15",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 16
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_10",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 13
                                            }
                                        },
                                        {
                                            "constant_score": {
                                                "query": {
                                                    "query_string": {
                                                        "default_field": "concept_words_05",
                                                        "query": "diabetes"
                                                    }
                                                },
                                                "boost": 4
                                            }
                                        }
                                    ]
                                }
                            }
                        ],
                        "disable_coord": true
                    }
                },
                "filter": {
                    "and": [
                        {
                            "term": {
                                "posted_by_expert": false
                            }
                        },
                        {
                            "term": {
                                "tip_question": false
                            }
                        },
                        {
                            "term": {
                                "show_in_work_queue": true
                            }
                        },
                        {
                            "range": {
                                "verified_answers_count": {
                                    "gt": 0
                                }
                            }
                        }
                    ]
                }
            }
        },
        "script": "_score * doc['my_numeric_field'].value"
    }
},
"sort": [
    "_score",
    {
        "count_words_with_high_concepts": {
            "order": "asc"
        }
    },
    {
        "popularity": {
            "order": "desc"
        }
    },
    {
        "length": {
            "order": "asc"
        }
    }
],
"fields": [],
"size": 10,
"from": 0}

1 个答案:

答案 0 :(得分:5)

在0.90.4之后的最新版弹性搜索中,这两个查询不可用。因此,如果您使用弹性搜索> 0.90.4(这是一个非常古老的版本),您必须使用 Function Score Query 替换0.90.4版本之后的 Custom Filters Score Query