SearchKick: как искать поля с регулярным выражением в эластичном?

Я хочу искать статьи по заголовку без учета регистра.

Я пробовал писать вот так

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

Но это не работает.


person Crazy Cat    schedule 18.11.2019    source источник
comment
Я пробовал Article.search (где: {title: {regexp: / some_title_here / i}}, load: false)   -  person Crazy Cat    schedule 18.11.2019


Ответы (1)


Чтобы включить поиск по полю для нечувствительных к регистру полей, вам необходимо создать соответствующее отображение в поле во время создания индекса, вот пример того, как это сделать:

$ 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 и может быть менее производительным, чем использование анализатора во время создания индекса.

person Shachaf.Gortler    schedule 18.11.2019