0

我正在使用弹性搜索来搜索我的应用程序中的一些记录。

filtered: {
            query: {
                query_string: {
                    query: "*#{term}*",
                    fields: ["name"]
                }
            },
            filter: {
                bool: {
                    must: [
                        {term: {store_id: store_id}},
                        {match: {dealer: dealer}}
                    ]
                }
            }
        }

当某些参数不存在并且为store_idand传递 nil 值时dealer。Ii 给出以下错误:{"type":"query_parsing_exception","reason":"No text specified for text query" 我想要 if store_idor dealeris nil 那么它应该显示与查询匹配的所有结果。在弹性搜索中可以吗?

4

1 回答 1

0

我会说你不能用匹配或术语查询来做到这一点。

您可以使用通配符或正则表达式查询来启用通配符搜索,但我建议您在应用程序中处理此问题。

即,当您的最终用户填写输入“store_id”或“dealer”时,您在查询的 must 子句中附加该值。否则,您不这样做,您将搜索整个索引。

于 2016-09-30T15:24:23.830 回答