ElasticSearch с n разделением слов и регулярным выражением (с гемом Tire)
Я использую ElasticSearch (с драгоценным камнем Tire). У меня есть следующий запрос, который будет соответствовать escaped cat
, escaped black cat
, так далее.
Мне было интересно, можно ли попросить ElasticSearch выполнить поиск по следующим критериям:
- "избежал [ровно 0 или 1 слово] кошка" т.е.)
escaped \w{0,1} cat
- "сбежал [n слов] кот" то есть)
escaped \w{n} cat
- "избежал [регулярное выражение здесь] кошка" т.е.)
escaped (big|black|white) cat
Текущий поисковый запрос:
{
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "\"escaped ? cat\"",
"analyzer": "snowball"
}
},
{
"query_string": {
"query": "\"escaped ? cat\"",
"default_operator": "and"
}
},
{
"flt_field": {
"content": {
"like_text": "\"escaped ? cat\""
}
}
},
{
"mlt_field": {
"content": {
"like_text": "\"escaped ? cat\""
}
}
}
]
}
}
}
1 ответ
Я думаю, что это возможно с помощью регулярного выражения Elasticsearch.
{
"regexp":{
"name.first": "s.*y"
}
}
Также есть фильтр регулярных выражений