我目前正在使用Tire Client进行elasticsearch。可以说我有一个字段,该字段在我的elasticsearch映射中被索引为很长的类型的字段。我正在尝试实现以下目标:
search.query {|query| query.string "30*", :fields => ['id']}
“ id”是我一直在谈论的领域。但是由于我在查询中指定了字段,所以通配符不起作用,最终我得到了唯一匹配的结果。
但是对_all搜索也可以执行相同的操作,因为字段类型无关紧要。我希望此通配符搜索有效,同时还要在该特定字段中搜索搜索关键字。有什么方法可以做到而无需更改我的映射?
感谢该脚本技巧上的@alex。终于我找到了行之有效的东西。!
所以我最终做了这个(简短地):
search.query do |query| query.filtered do |f| f.filter :script, { :script => "doc['id'].value.toString() ~= '^30[0-9]*$'" } end end
希望能帮助到你。