Elasticsearch多术语搜索



我正在使用elasticsearch允许用户在术语中键入搜索。我有以下属性"名称",例如:

'name': 'The car is black'

如果用于搜索black carcar black

,我想返回此文档

我已经尝试执行Bool必须并执行多个术语['black', 'car'],但似乎只有在整个字符串是匹配的情况下才起作用。

所以我真正想做的更多是a,该术语是否包含两个单词。

有人可以让我走上正确的道路吗?我已经在这一头上敲了个头了一段时间。

如果似乎仅在整个字符串是匹配的情况下起作用,请先确保在索引映射您的字符串属性属性name,即此属性的映射 DON't包含 "index": "not_analyzed"。如果事实并非如此,则需要重新索引您的索引,以便能够搜索令牌而不是整个短语。

确定分析字符串后,您可以使用:

  1. "minimum_should_match"参数查询的术语等于输入的单词数量。
  2. 带有每个单词的术语查询的Bool查询。
  3. 常见术语查询,它具有为此目的具有不错的干净语法(您不需要分解输入字符串,并在应用程序中像以前的两个一样构建更复杂的查询结构),除了采用更聪明的方法来分析spotwords。

最新更新