Я пытаюсь найти предложение, состоящее из слова с апострофом. Так, в текстеЭластик не находит слово с апострофом (')
Если вы спросите иностранцев назвать некоторые типично английские блюда, они , вероятно, говорят, рыба и чипсы, а затем остановиться. Это неутешительно, но верно, что в Британии нет традиции питания в ресторанах , потому что наша пища не поддается такой подготовке. Британская кулинария находится в доме, где можно дождаться блюд до совершенства. Так что трудно найти хороший английский ресторан с разумными ценами
Я пытаюсь найти
найти это разочаровывает, но верно, что нет никакой традиции в британии еды в ресторанах , потому что наша пища не
создать запрос
{
"_index": "liza_index",
"_type": ".percolator",
"_id": "1594",
"_version": 37,
"found": true,
"_source": {
"query": {
"bool": {
"minimum_should_match": 1,
"should": {
"span_or": {
"clauses": [{
"span_near": {
"in_order": true,
"clauses": [{
"span_multi": {
"match": {
"regexp": {
"message": "it"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "is"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "disappointing"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "but"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "true"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "that"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "there"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "is"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "no"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "tradition"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "in"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "britain"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "of"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "eating"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "in"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "restaurants"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "because"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "our"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "food"
}
}
}
}, {
"span_multi": {
"match": {
"regexp": {
"message": "doesn't"
}
}
}
}],
"slop": 0,
"collect_payloads": false
}
}]
}
}
}
}
}}
Но Эластик не находит его. Без «не» запрос работает.
Я попытался добавить обратную косую черту перед апострофом - «doesn \ t» недействителен, поэтому я сделал «doesn \\ t» и «doesn \\\\ t». Но это не сработает.
Кстати, я создаю запрос с одним словом «не» с обратной косой черты и без
{
"_index": "liza_index",
"_type": ".percolator",
"_id": "2101",
"_version": 31,
"found": true,
"_source": {
"query": {
"bool": {
"minimum_should_match": 1,
"should": {
"span_or": {
"clauses": [{
"span_multi": {
"match": {
"regexp": {
"message": "doesn't"
}
}
}
}]
}
}
}
}
}}
И это не работает тоже. В то же время следующие запросы работают
curl -XPUT 'localhost:9200/liza_index/.percolator/1' -d '{"query" : {"match" : {"message" : "doesn't"}}}'
и
curl -XPUT 'localhost:9200/liza_index/.percolator/1' -d '{"query" : {"match" : {"message" : "doesn\\'t"}}}'
Возникает вопрос: как я могу найти слово с апострофом? Какой запрос я должен создать, используя структуру моего первого запроса?
я найти регулярные выражения, поэтому я не могу используйте match_phrase (насколько я вижу, в match_phrase я не могу использовать регулярные выражения). Таким образом, исправление настроек токенизатора помогает. Спасибо! – Shelari