SearchKick:如何在Elastic中使用正则表达式搜索字段?

时间:2019-11-18 16:25:39

标签: ruby-on-rails regex elasticsearch searchkick

我想根据不区分大小写的标题搜索文章。

我试图这样编码

  

Article.search(where: {title: /some_titles_here/i}, load: false)

但这不起作用。

1 个答案:

答案 0 :(得分:0)

要启用对不区分大小写的字段进行字段搜索,您需要在索引创建时间的字段上创建适当的映射,以下是有关如何执行此操作的示例:

$ curl -XPUT localhost:9200/Article/ -d '
{
  "settings":{
     "index":{
        "analysis":{
           "analyzer":{
              "analyzer_keyword":{
                 "tokenizer":"keyword",
                 "filter":"lowercase"
              }
           }
        }
     }
  },
  "mappings":{
     "Article":{
        "properties":{
           "title":{
              "analyzer":"analyzer_keyword",
              "type":"string"
           }
        }
     }
  }
}'

还有一个选项可以在搜索时指定分析器,但这取决于您使用的ES版本,并且其性能可能不如在创建索引时使用分析器。