Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 弹性搜索:使用通配符搜索整数_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Wildcard_Tire - Fatal编程技术网 elasticsearch,wildcard,tire,Search,elasticsearch,Wildcard,Tire" /> elasticsearch,wildcard,tire,Search,elasticsearch,Wildcard,Tire" />

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

Search 弹性搜索:使用通配符搜索整数,search,elasticsearch,wildcard,tire,Search,elasticsearch,Wildcard,Tire,我目前正在使用轮胎客户端进行弹性搜索。假设我有一个字段,在弹性搜索映射中作为long类型的字段进行索引。 我正在努力实现这样的目标: search.query {|query| query.string "30*", :fields => ['id']} 这里的“id”是我所说的长字段。但是由于我在查询中指定了字段,所以通配符不起作用,我最终得到的结果是完全匹配的 但是,对_all搜索执行相同的操作,因为字段类型并不重要。我希望这个通配符搜索在搜索特定字段中的搜索键时也能正常工作。有没有

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

search.query {|query| query.string "30*", :fields => ['id']}
这里的“id”是我所说的长字段。但是由于我在查询中指定了字段,所以通配符不起作用,我最终得到的结果是完全匹配的

但是,对_all搜索执行相同的操作,因为字段类型并不重要。我希望这个通配符搜索在搜索特定字段中的搜索键时也能正常工作。有没有办法在不更改映射的情况下执行此操作?

我看到了下一个解决方案:

  • 使用multifield并将其设置为字符串类型(但需要更改映射)
  • 使用range并将其转换为以下内容:

    (从30到39)或(从300到309)或(从3000到3099) 或(从30000到30999)或。。。(至最大值)

  • 使用脚本并检查这一点

我看到了下一个解决方案:

  • 使用multifield并将其设置为字符串类型(但需要更改映射)
  • 使用range并将其转换为以下内容:

    (从30到39)或(从300到309)或(从3000到3099) 或(从30000到30999)或。。。(至最大值)

  • 使用脚本并检查这一点


    • 感谢@alex的脚本技巧。最后我找到了一些有效的方法。呸

      因此,我最终(简短地)这样做了:


      希望有帮助。

      感谢@alex的脚本技巧。最后我找到了一些有效的方法。呸

      因此,我最终(简短地)这样做了:


      希望有帮助。

      您是否遇到过使用脚本的任何示例?还有,我们可以通过使用正则表达式做些什么吗?哦,我看到你找到了一个解决方案是的,我找到了。谢谢你的提示。我从来没有想过脚本。不使用脚本过滤器有没有可能做到这一点?嘿,伙计们,你们能告诉我他们发布的是哪个版本的
      script filter
      ?你们有没有遇到过使用脚本的例子?还有,我们可以通过使用正则表达式做些什么吗?哦,我看到你找到了一个解决方案是的,我找到了。谢谢你的提示。我从来没有想过脚本。有没有可能不用脚本过滤器来做呢?嘿,伙计们,你们能告诉我他们发布了哪个版本的脚本过滤器吗?
      search.query do |query|
        query.filtered do |f|
            f.filter :script, { 
          :script => "doc['id'].value.toString() ~= '^30[0-9]*$'"
            }
        end
      end