一尘不染

elasticsearch:使用通配符搜索整数

elasticsearch

我目前正在使用Tire Client进行elasticsearch。可以说我有一个字段,该字段在我的elasticsearch映射中被索引为很长的类型的字段。我正在尝试实现以下目标:

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

“ id”是我一直在谈论的领域。但是由于我在查询中指定了字段,所以通配符不起作用,最终我得到了唯一匹配的结果。

但是对_all搜索也可以执行相同的操作,因为字段类型无关紧要。我希望此通配符搜索有效,同时还要在该特定字段中搜索搜索关键字。有什么方法可以做到而无需更改我的映射?


阅读 451

收藏
2020-06-22

共1个答案

一尘不染

感谢该脚本技巧上的@alex。终于我找到了行之有效的东西。!

所以我最终做了这个(简短地):

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

希望能帮助到你。

2020-06-22