优化ElasticSearch中两个相关但不同的字符串字段的搜索

时间:2018-02-08 23:30:48

标签: scala elasticsearch elastic4s

我正在对具有

的对象运行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结合起来吗?

1 个答案:

答案 0 :(得分:0)

尝试使用布尔查询,您可以使用must(弹性搜索的方式是AND)。

client.execute {
  boolQuery().must(matchQuery("john"), matchQuery("joe"))
}
相关问题