弹性搜索:使用通配符搜索整数

时间:2014-02-05 13:56:27

标签: search elasticsearch wildcard tire

我目前正在使用轮胎客户端进行弹性搜索。假设我的弹性搜索映射中有一个字段被索引为long类型的字段。 我正在努力实现这样的目标:

search.query {|query| query.string "30*", :fields => ['id']}

这里'id'是我所谈论的长场。但是因为我在查询中指定了字段,所以通配符不起作用,我最终得到完全匹配作为唯一的结果。

但是同样的事情适用于_all搜索,因为字段类型无关紧要。我希望这种通配符搜索能够工作,同时还在该特定字段中搜索搜索关键字。有没有办法在不改变我的映射的情况下做到这一点?

2 个答案:

答案 0 :(得分:2)

我看到下一个解决方案:

答案 1 :(得分:2)

感谢@alex关于该脚本提示。最后我发现了一些有用的东西。呼!

所以我最后这样做了(简要地说):

search.query do |query|
  query.filtered do |f|
      f.filter :script, { 
    :script => "doc['id'].value.toString() ~= '^30[0-9]*$'"
      }
  end
end

希望它有所帮助。