如何使弹性搜索执行类似于SQL的"LIKE"

Ste*_*eve 7 sql postgresql ruby-on-rails ruby-on-rails-3 elasticsearch

如果使用SQL"Like"语句来查询数据,即使它只是部分匹配,它也会返回数据.例如,如果我正在搜索食物,并且在使用SQL时我的数据库中有一个名为"raisins"的项目,即使我的搜索只包含"rai",查询也会返回"raisins".在elasticsearch中,除非指定了整个名称(在本例中为"raisins"),否则查询不会返回记录.如何使elasticsearch的行为与SQL语句类似.我正在使用Rails 3.1.1和PostgreSQL.谢谢!

abh*_*has 5

为elasticsearch创建模型索引时,在索引上使用tokenizer来满足您的要求.对于.例如

tokenizer: {
              :name_tokenizer => {type: "edgeNGram", max_gram: 100, min_gram: 3, side: "front"}
           }
Run Code Online (Sandbox Code Playgroud)

这将创建大小从3到100的字段的标记,并且作为前面给出的标记将从开始检查.您可以从这里获得更多详细信息http://www.slideshare.net/clintongormley/terms-of-endearment-the-elasticsearch-query-dsl-explained