#elasticsearch #nest
Вопрос:
Использование клиента Elasticsearch Nest для поиска магазина названий компаний в Elasticsearch. Вот пример моих запросов.
Я хочу изменить его, чтобы убедиться, что при поиске «Starbucks» он должен возвращать только запись, начинающуюся с буквы «Starbucks». В настоящее время он пересматривает все записи, в которых есть «Старбакс». Основываясь на документации, мне нужно выполнить поиск по поданному «ключевому слову», чтобы получить результат. Нужен пример кода, чтобы понять, как этого добиться.
****Столбец Индекса Эластичного поиска»
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
Код*
var escapedSearchTerm = Эластичные расширения.EscapeQuery(название компании);
верните новый QueryContainerDescriptor().Bool(b => b.Должен(mu =>> mu
.Строка запроса(qs => qs
.AllowLeadingWildcard(true)
.AnalyzeWildcard(верно)
.Поля(f => f.Поле(s =>> s.Company.Name).Поле(s => s.Организация.Общее имя))
.Запрос(escapedSearchTerm)
)));
Ответ №1:
Я не знаком с клиентом Elastic Search Nest, но в формате JSON вы можете реализовать поиск с функциональностью, используя префиксный запрос
Добавление рабочего примера с данными индекса,отображением,поисковым запросом и результатом поиска
Сопоставление индексов:
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "keyword",
"filter": "lowercase"
}
}
}
},
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "my_analyzer"
}
}
}
}
Данные Индекса:
{
"name":"Starbucks is a American multinational chain of coffeehouses"
}
{
"name":"coffee at Starbucks"
}
Поисковый запрос:
{
"query": {
"prefix": {
"name": {
"value": "Starbucks",
"case_insensitive": true // this param was introduced in 7.10.0
}
}
}
}
Результат поиска:
"hits": [
{
"_index": "67424740",
"_type": "_doc",
"_id": "1",
"_score": 1.0,
"_source": {
"name": "Starbucks is a American multinational chain of coffeehouses"
}
}
]
Комментарии:
1. @FlexJogger, пожалуйста, просмотрите ответ и дайте мне знать, решит ли это вашу проблему ?
2. Спасибо Эскодеру. Я ищу образец кода Nest API для поиска ES.
3. Я попробовал в инструменте Kibana Dev, и он не дал никакого результата. POST _search { «запрос»: { «префикс»: { «организация. legalEntity.name»: { «стоимость»: «Costco» } } } }
4. @FlexJogger какую версию elasticsearch вы используете? Не могли бы вы поделиться своим отображением индекса и некоторыми образцами данных индекса, по которым вы выполняете свой запрос ?