我使用Elasticsearch允许用户输入要搜索的字词。我有以下财产' name'我想搜索一下,例如:
'name': 'The car is black'
如果以下内容用于搜索black car
或car black
,我想要退回此文档。
我已经尝试过做一个bool必须并执行多个术语['black', 'car']
但似乎只有在整个字符串匹配时它才有效。
所以我真正喜欢做的更多的是,该术语是否包含任何顺序的单词。
有人可以让我走上正轨吗?我已经在这个问题上敲了一会儿。
答案 0 :(得分:0)
如果它看起来只有整个字符串匹配才有效,首先要确保在索引映射中分析你的字符串属性name
,即该属性的映射不包含 "index": "not_analyzed"
。如果不是这样,您需要重新索引索引,以便能够搜索令牌而不是仅搜索整个短语。
一旦确定分析了字符串,就可以使用:
"minimum_should_match"
参数等于输入的字数。