我正在对具有
的对象运行ES查询{ id, firstName, lastName }
并且我想允许搜索John Doe
,但是现在如果我查询那么我得到的所有对象都与John
相关而不是Doe
我将名称映射为text
字段,分析符如下(对于我们的scala弹性客户端)
EdgeNGramTokenizer(
name = "nGram",
minGram = 3,
maxGram = 20
),
LowercaseTokenFilter
然后我将query(searchString)
传递给must()
搜索(使用elastic4s)。
searchWithType(kind / kind) from offset size limit query {
boolQuery().must(query(searchString)).not(filteredNotQueries)
} sortBy(sorts)
我的映射是否不正确?为了Elastic4s,我应该将firstName和lastName结合起来吗?
答案 0 :(得分:0)
尝试使用布尔查询,您可以使用must
(弹性搜索的方式是AND)。
client.execute {
boolQuery().must(matchQuery("john"), matchQuery("joe"))
}