Я использую плагин эластичного поиска, использующий сервис aws lambda nodejs:
https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/quick-start.html
И все отлично работает.
Я новичок в этом и все еще учусь. Вот мой запрос:
requestBody = elasticSearchBuilder.requestBodySearch()
.query(
elasticSearchBuilder.boolQuery()
.must(elasticSearchBuilder.multiMatchQuery(fields, "#test")
.type(sortAlgorithm)
.tieBreaker(tieBreaker)
.minimumShouldMatch(searchAccuracySent))
.must(elasticSearchBuilder.matchQuery("enabled", "1"))
.filter(elasticSearchBuilder.rangeQuery(dateTimeFieldRangeCheck).gt(dateFrom))
.filter(elasticSearchBuilder.rangeQuery(dateTimeFieldRangeCheck).lt(dateTo))
).sort(elasticSearchBuilder.sort(dateTimeFieldRangeCheck,"desc"))
Проблема не имеет значения, если я ищу тест или #test, приведенный выше запрос возвращает только результаты, связанные с тестом.
Так что, видимо, это не учитывает #.
Я ценю, если кто-нибудь может мне помочь
Обновление:
Вот мой чистый запрос:
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "#test",
"fields": [
"channel_name",
"owner",
"owner_channel",
"byline_name",
"byline_publication",
"headline",
"seo_terms",
"category",
"body",
"pull_quote"
],
"type": "best_fields",
"tie_breaker": 0.3
}
},
{
"match": {
"enabled": "1"
}
}
],
"filter": [
{
"range": {
"publish_datetime": {
"gt": "2013-02-28 23:59:16"
}
}
},
{
"range": {
"publish_datetime": {
"lt": "2020-02-28 23:59:16"
}
}
}
]
}
},
"sort": [
{
"publish_datetime": "desc"
}
]
}