0

我准备查询对象并在弹性搜索中进行搜索。

为了制作查询对象,我给出了键和它们的值。

问题是,当 key 和 value 类似于 "brand":"Men's Wear" 时,在这种情况下,elasticsearch 无法给我相关文档。我认为问题在于逗号或可能是空格。如果我使用其他 json 属性作为键和值,一切都很好(没有空格和逗号,如“优先级”:“高”)

请提供任何帮助!

更新:

没有匹配查询仍然无法正常工作!我在创建搜索查询时发现的另一个问题。我正在使用的查询是:

var qryObj1 = {
                       "query" : {
                        "text" : {"name":"Tom"}
                    }
                };     

这将返回所有名为 Tom 的文档。现在我想获取所有名称为 Tom 且职业是开发人员的文档。所以,这里修改了一个:

qryObj1 = {
                    "query" : {
                        "text" : {"name":"Tom","profession":"developer"}
                    },"operator" : "and"

                };     

但搜索结果是旧的。任何帮助!

4

2 回答 2

1

您需要使用布尔查询 http://www.elasticsearch.org/guide/reference/query-dsl/bool-query.html

这里可以要求ES对各种查询进行AND或OR

"bool" : {
    "must" : [
                    "text" : {"name":"Tom"},
                    "text" : {"profession":"developer"}
    ]

}

于 2012-10-21T05:08:57.460 回答
1

听起来您正在使用 TermQuery,不是吗?

不分析 TermQuery,因此它们与您分析的内容不匹配。

尝试使用MatchQuery。它应该工作。

于 2012-10-17T20:02:27.317 回答