Tag:

使用c#client Nest在没有拨号的elasticsearch中进行索引和全文搜索

我正在准备一个带弹性搜索的站内搜索引擎,我是elasticsearch的新手。 将使用此引擎的网站是土耳其语/英语 。 在土耳其,我们有土耳其字母,如‘ğ’,’ü’,’ş’,’ı’,’ö’,’ç’ 。 但是当我们搜索时,我们使用字母‘g’,’u’,’s’,’i’,’o’,’c’ 。 这不是一个规则,但我们通常会这样做,像习惯一样思考,这是我们过去常常做的事情。 现在,我有一个名为“product”的文档类型,这种类型有几个字符串属性,有些是嵌套的。 例如: public class Product { public string ProductName { get; set; } public Category Category { get; set; } //… } public class Category { public string CategoryName { get; set; } //… } 我的目标是: ProductName或Category.CategoryName可能包含土耳其语字母(“ Eşarp ”)或某些可能输入错误并使用英文字母(“ Esarp ”)编写 查询字符串可能包含土耳其语字母(“ eşarp ”)或不包含(“ esarp ”) 查询字符串可能有多个单词 […]

Elasticsearch使用NEST:如何配置分析器来查找部分单词?

我试图通过部分单词进行搜索,忽略套管并忽略某些字母的重音。 可能吗? 我认为ngram与默认的tokenizer应该做的伎俩,但我不明白如何使用NEST。 示例:“musiic”应匹配具有“音乐”的记录 我使用的Elasticsearch版本是1.9。 我这样做但它不起作用…… var ix = new IndexSettings(); ix.Add(“analysis”, @”{ ‘index_analyzer’ : { ‘my_index_analyzer’ : { ‘type’ : ‘custom’, ‘tokenizer’ : ‘standard’, ‘filter’ : [‘lowercase’, ‘mynGram’] } }, ‘search_analyzer’ : { ‘my_search_analyzer’ : { ‘type’ : ‘custom’, ‘tokenizer’ : ‘standard’, ‘filter’ : [‘standard’, ‘lowercase’, ‘mynGram’] } }, ‘filter’ : { ‘mynGram’ : […]

QueryDescriptor nest 2.x的替代方法是什么

我们正在将Nest 1.0迁移到NEST 2.0,在以前的版本中,我们有这样的查询: container = new QueryContainer(); container = new QueryDescriptor().Range(qs => qs.OnField(f => f.PublishedDate).LowerOrEquals(TimeZoneInfo.ConvertTimeToUtc(DateTime.Now))); if (!string.IsNullOrEmpty(contentType) && !contentType.ToLower().Equals(“all”)) { container &= new QueryDescriptor().QueryString(qs => qs.OnFields(f => f.ContentType).Query(contentType)); } 在NEST 2.0中,QueryDescriptor类不可用,我们如何在NEST 2.0中执行类似的操作?

如何在NEST2中更新Elasticsearch文档

我已将我的代码移植到NEST 2.0和Elasticsearch 2.0 我需要找到一种方法来更新已存储到ES2中的文档 我正在使用部分对象技术 : elastic.Update(u => u .Index(myIndexName) .Id(id) .Doc( new myPartialDocumentType() { // set the fields to update here }) .Refresh()); 如何使用NEST2做同样的事情?

从被索引中排除财产

我创建了下面的对象,它将映射到ElasticSearch类型。 我想排除UnivId属性被索引: [ElasticType(Name = “Type1″)] public class Type1 { // To be ignored public string UnivId { get; set; } [ElasticProperty(Name=”Id”)] public int Id { get; set; } [ElasticProperty(Name = “descSearch”)] public string descSearch { get; set; } }

ElasticSearch NEST客户端不返回结果

我正在通过ElasticSearch NEST C#客户端运行一个简单的查询。 当我通过http运行相同的查询时,我收到结果,但是我从客户端返回零文档。 这是我填充数据集的方式: curl -X POST “http://localhost:9200/blog/posts” -d @blog.json 此POST请求返回JSON结果: http://localhost:9200/_search?q=adipiscing 这是我没有返回任何内容的代码。 public class Connector { private readonly ConnectionSettings _settings; private readonly ElasticClient _client; public Connector() { _settings = new ConnectionSettings(“localhost”, 9200); _settings.SetDefaultIndex(“blog”); _client = new ElasticClient(_settings); } public IEnumerable Search(string q) { var result = _client.Search(s => s.QueryString(q)); return result.Documents.ToList(); } } […]

如何使用NEST更新ElasticSearch索引中的现有文档?

我正在尝试更新现有的索引文档。 我有索引标签,标题和所有者字段。 现在,当用户更改标题时,我需要查找并更新索引中的文档。 我应该更新和替换整个文档还是只更改标题字段? public void UpdateDoc(ElasticsearchDocument doc) { Uri localhost = new Uri(“http://localhost:9200”); var setting = new ConnectionSettings(localhost); setting.SetDefaultIndex(“movies”); var client = new ElasticClient(setting); IUpdateResponse resp = client.Update( d => d.Index(“movies”) .Type(doc.Type) .Id(doc.Id), doc); } 它只是不起作用。 上面的代码生成语法错误。 有没有人知道使用ElasticSearch的C#NEST客户端执行此操作的正确方法?

使用NEST Field Boosting进行弹性搜索

我使用NEST强类型客户端在C#中使用弹性搜索。 我有一个包含条目的索引: [ElasticType(Name = “Entry”, IdProperty = “Id”)] public class Entry { public string Id { get; set; } public string Title { get; set; } public string Description { get; set; } public string Award { get; set; } public int Year { get; set; } } 如果年份是参赛年份,例如2012年,奖励是参赛作品获奖的类型,可以为空。 然后我想使用boost来搜索这些条目以获得不同的属性。 在下面的代码中,我希望结果在Title上的排名高于在Description上匹配的结果。 private IQueryResponse GetMatchedEntries(string searchText) […]

如何在NEST中禁用驼峰套管Elasticsearch字段名称?

默认情况下,NEST会在将对象发送到Elasticsearch进行索引时使用驼峰大小写对象和属性名称。 如何在NEST中为Elasticsearch文档禁用骆驼套管字段名称? 我做了大量的研究,并且有关于这个主题的邮件列表主题,但是由于某些方法已经重命名或不再存在,它似乎已经过时了。 IConnectionPool connectionPool = new SniffingConnectionPool(m_ElasticsearchNodeUris); ConnectionSettings settings = new ConnectionSettings(connectionPool); settings.SetDefaultTypeNameInferrer(p => p.Name); //This disables camel casing for object type names ElasticClient client = new ElasticClient(settings); 邮件列表中的信息表明应添加此代码以处理字段名称,但客户端方法似乎不存在: client.ModifyJsonSerializationSettings(s => s.ContractResolver = new Nest.Resolvers.ElasticResolver(settings); 有没有人有任何更新的语法来处理这个? 谢谢。

使用NEST创建自定义标记filter

如何使用具有此类JSON的NEST配置索引: “settings”:{ “analysis”:{ “filter”:{ “name_ngrams”:{ “side”:”front”, “max_gram”:50, “min_gram”:2, “type”:”edgeNGram” } }, “analyzer”:{ “partial_name”:{ “filter”:[ “standard”, “lowercase”, “asciifolding”, “name_ngrams” ], “type”:”custom”, “tokenizer”:”standard” } } } 我可以使用CustomAnalyzer类创建我的自定义分析器,但我无法找到如何创建自定义filter并在我的分析器中注册它。 提前致谢!