gpt4 book ai didi

elasticsearch - elasticsearch结合多个查询

转载 作者:行者123 更新时间:2023-12-03 00:32:16 24 4
gpt4 key购买 nike

我有一个用于存储有关人的信息的elasticsearch索引。
为了找到特定的人,我有一些查询,每个查询都可以单独使用,但是当我使用 bool(boolean) 查询将它们组合在一起时,会出现错误。

查询之一是对名称的模糊搜索

{
"query": {
"fuzzy_like_this": {
"fields": [
"firstname",
"lastname"
],
"like_text": "Peter"
}
}
}

另一个查询用于搜索在特定日期范围内出生的人
{
"query": {
"range": {
"birthdate": {
"from": "1988-12-30",
"to": "1993-12-30"
}
}
}
}

现在,我想结合这两个查询。我的 bool(boolean) 查询:
{
"query": {
"bool": {
"must": [
{
"query": {
"fuzzy_like_this": {
"fields": [
"firstname",
"lastname"
],
"like_text": "Peter"
}
}
},
{
"query": {
"range": {
"birthdate": {
"from": "1988-12-30",
"to": "1993-12-30"
}
}
}
}
]
}
}
}

尽管当我分别使用它们时,这两个查询都可以正常工作,但是当将它们组合在一起时,会出现错误。
我的索引中有一些人的姓氏Peter AND出生在这个日期范围内,但是即使没有人找到,我也应该得到0结果而不是错误。

错误提示:
“error”:“SearchPhaseExecutionException [无法执行阶段[查询],所有分片均失败;
嵌套:QueryParsingException [[indexname]没有为[query]]注册查询

是将查询与 bool(boolean) 查询无法实现的方式合并在一起,还是使用了错误的语法?

最佳答案

我认为您存在语法错误,属于query的查询不需要关键字must。换句话说,应如下所示:

{
"query": {
"bool": {
"must": [
{
"fuzzy_like_this": {
"fields": [
"firstname",
"lastname"
],
"like_text": "Peter"
}
},
{
"range": {
"birthdate": {
"from": "1988-12-30",
"to": "1993-12-30"
}
}
}
]
}
}
}

有关 bool(boolean) 查询 here的更多信息

关于elasticsearch - elasticsearch结合多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20841691/

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