Я ищу запрос на поиск ElasticSearch, который обеспечит точное соответствие строки, содержащей пробелы в ней, используя C#.Эластичная поисковая строка, содержащая пробелы и специальные символы в ней с использованием C#
например - Я хочу найти слово, например, «XYZ Company Solutions». Я попробовал запрос с запросом, но он дает мне все записи независимо от результата поиска. Также я прочитал в сообщении и обнаружил, что нам нужно добавить некоторые сопоставления для поля. Я попробовал анализатор «Not_Analyzed» на поле, но все-таки это не сработало.
Вот мой код C#
var indexDefinition = new RootObjectMapping
{
Properties = new Dictionary<PropertyNameMarker, IElasticType>(),
Name = elastic_newindexname
};
var notAnalyzedField = new StringMapping
{
Index = FieldIndexOption.NotAnalyzed
};
indexDefinition.Properties.Add("Name", notAnalyzedField);
objElasticClient.DeleteIndex(d => d.Index(elastic_newindexname));
var reindex = objElasticClient.Reindex<dynamic>(r => r.FromIndex(elastic_oldindexname).ToIndex(elastic_newindexname).Query(q => q.MatchAll()).Scroll("10s").CreateIndex(i => i.AddMapping<dynamic>(m => m.InitializeUsing(indexDefinition))));
ReindexObserver<dynamic> o = new ReindexObserver<dynamic>(onError: e => { });
reindex.Subscribe(o);**
**ISearchResponse<dynamic> ivals = objElasticClient.Search<dynamic>(s => s.Index(elastic_newindexname).AllTypes().Query(q => q.Term("Name","XYZ Company Solutions")));** //this gives 0 records
**ISearchResponse<dynamic> ivals1 = objElasticClient.Search<dynamic>(s => s.Index(elastic_newindexname).AllTypes().Query(q => q.Term(u => u.OnField("Name").Value("XYZ Company Solutions"))));** //this gives 0 records
**ISearchResponse<dynamic> ivals = objElasticClient.Search<dynamic>(s => s.Index(elastic_newindexname).AllTypes().Query(@"Name = 'XYZ Company Solutions'"));** //this gives all records having fields value starting with "XYZ"
Если кто-то есть полный пример или шаги в C#, то пожалуйста, вы можете поделиться со мной?
Вы можете также предоставить указательный схему, которая создается на получение elasticsearch? curl -XGET localhost: 9200/name_of_the_index? pretty = true В принципе, чтобы соответствовать точной строке, вам нужно убедиться, что вы не анализируете ее при индексировании. –