【问题标题】:ES: Match bool and fuzzy queryES:匹配布尔和模糊查询
【发布时间】:2019-01-22 14:08:15
【问题描述】:

我有 ES 查询。现在我想在这个查询中添加“模糊”参数。 我正在尝试:

            "body"  : {
            "query" : {
                "bool" : {
                    "must" : {
                        $finalQuery,
                        },
                    }
                },
                "match" : {
                    "city" : {
                        "query" : 'Tokkiio',
                        "fuzziness" : "AUTO"
                    },
                }
            }

$finalQuery 是循环生成的查询,包含术语、范围和术语参数。

我收到了:

"{"error":{"root_cause":[{"type":"parsing_exception","reason":"[bool] malformed query, expected [END_OBJECT] but found [FIELD_NAME]","line":1,"col":177}],"type":"parsing_exception","reason":"[bool] malformed query, expected [END_OBJECT] but found [FIELD_NAME]","line":1,"col":177},"status":400}"

感谢您的帮助。

【问题讨论】:

    标签: php database laravel elasticsearch nosql


    【解决方案1】:

    请将查询重组为查询上下文和过滤上下文,如此处所述 - https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html

    将您的模糊查询和类似条件置于查询上下文中。移动范围和任何过滤条件以过滤上下文。这是一个示例查询。

    {
        "query":
        {
            "bool":
            {
                "must":
                {
                    "fuzzy":
                    {
                        "city":
                        {
                            "value": "Tokkiio",
                            "fuzziness": "AUTO"
                        }
                    }
                },
                "filter":
                {
                    "range":
                    {
                        "year":
                        {
                            "gte": 2016
                        }
                    }
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多