如何禁用源字段并在 Nest 中使用商店?
How to disable source field and use store with Nest?
我想在最初完成 here 时禁用源。我不确定如何实现与示例中类似的东西
PUT tweets
{
"mappings": {
"tweet": {
"_source": {
"enabled": false
}
}
}
}
我在下面尝试过,但是当我输入 http://localhost:9200/_plugin/head/;我可以看到所有属性都已存储。我希望仅存储和索引 id 和 name 属性。
var node = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(node, defaultIndex: "mydatabase");
var client = new ElasticClient(settings);
var createIndexResult = client.CreateIndex("mydatabase");
var mapResult = client.Map<Product>(c => c.MapFromAttributes().SourceField(s=>s.Enabled(false)).IgnoreConflicts().Type("product").Indices("mydatabase"));
client.Index(sampleproduct);
[ElasticType(Name ="product", IdProperty = "ProductId" )]
[Table("Product")]
public partial class Product
{
[ElasticProperty(Name = "id",Index = FieldIndexOption.NotAnalyzed, Store = true)]
public int ProductId { get; set; }
[ElasticProperty(Index = FieldIndexOption.Analyzed, Store = true)]
public string Name { get; set; }
[ElasticProperty(Index = FieldIndexOption.No, Store = false)]
public int? ProductTypeId { get; set; }
[ElasticProperty(Index = FieldIndexOption.No, Store = false)]
public int? ManufacturerId { get; set; }
}
编辑:创建索引后不添加任何文档,索引元数据看起来像图像。我没有看到任何启用错误的来源。
EDIT2:更改后先创建索引然后映射。名称字段如图所示显示 store=true 但未存储任何值。我进行了调试,并且我肯定会在索引 sampleproduct
的地方传递值
您需要先添加映射,然后再索引文档。只有这样您才能看到获得预期的映射。通过首先在没有映射的情况下建立索引,可以使用默认选项动态创建映射(启用源)。
我想在最初完成 here 时禁用源。我不确定如何实现与示例中类似的东西
PUT tweets
{
"mappings": {
"tweet": {
"_source": {
"enabled": false
}
}
}
}
我在下面尝试过,但是当我输入 http://localhost:9200/_plugin/head/;我可以看到所有属性都已存储。我希望仅存储和索引 id 和 name 属性。
var node = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(node, defaultIndex: "mydatabase");
var client = new ElasticClient(settings);
var createIndexResult = client.CreateIndex("mydatabase");
var mapResult = client.Map<Product>(c => c.MapFromAttributes().SourceField(s=>s.Enabled(false)).IgnoreConflicts().Type("product").Indices("mydatabase"));
client.Index(sampleproduct);
[ElasticType(Name ="product", IdProperty = "ProductId" )]
[Table("Product")]
public partial class Product
{
[ElasticProperty(Name = "id",Index = FieldIndexOption.NotAnalyzed, Store = true)]
public int ProductId { get; set; }
[ElasticProperty(Index = FieldIndexOption.Analyzed, Store = true)]
public string Name { get; set; }
[ElasticProperty(Index = FieldIndexOption.No, Store = false)]
public int? ProductTypeId { get; set; }
[ElasticProperty(Index = FieldIndexOption.No, Store = false)]
public int? ManufacturerId { get; set; }
}
编辑:创建索引后不添加任何文档,索引元数据看起来像图像。我没有看到任何启用错误的来源。
EDIT2:更改后先创建索引然后映射。名称字段如图所示显示 store=true 但未存储任何值。我进行了调试,并且我肯定会在索引 sampleproduct
的地方传递值您需要先添加映射,然后再索引文档。只有这样您才能看到获得预期的映射。通过首先在没有映射的情况下建立索引,可以使用默认选项动态创建映射(启用源)。