我们可以搜索特定文档中的所有单词。这样的字段:
{ "query" : { "match" : { "title": { "query" : "Black Nike Mens", "operator" : "and" } } } }
这将在字段Black
中搜索单词Nike
,Mens
和title
,以便只返回那些将在{title
中包含所有这些单词的文档{1}}字段。
但我想做的事情有点不同。
我想查找,如果文档的title
字段的所有字词都出现在我的搜索查询中,那么它将返回该文档。
例如
假设elasticsearch数据库中有一个title : "Nike Free Sparq Mens White"
的文档
现在,如果我使用query : "Nike Free Sparq 09 - Mens - White/Black/Varsity Red"
进行搜索,那么它应该返回此文档,因为document.title中的所有单词都存在于我的查询中
但如果我使用query : "Nike Free Lebron - Mens - White/Black"
进行搜索,那么它不应该返回该文档,因为我的查询中缺少Sparq
这个词
这是一种反向和操作员搜索
这可能吗?如果是,那怎么办?
答案 0 :(得分:3)
我终于得到了它的工作,但不是直接的方法!
这就是我的所作所为:
这对我很有用!
除非有人使用elasticsearch查询语言提供直接方法。
答案 1 :(得分:0)
Percolate query应该在这里有所帮助。您需要将文档注册为查询,并使用AND运算符将“ Nike Free Sparq Mens White”作为匹配查询。
然后,您的查询可以成为一个以“ Nike Free Sparq 09-男士-白色/黑色/红色”为内容的文档。您应该重新获得“ Nike Free Sparq Mens White”,因为它符合所有条件。
不幸的是,这不能很好地扩展(例如,如果您有数百万个文档,它可能会变慢)。