[英]Index Json Document using Elasticsearch NEST C#
我是Elasticsearch的新手,想要了解如何使用NEST C#在Jlastic文档之后创建索引和索引到Elasticsearch?
{
"BookName": "Book1",
"ISBN": "978-3-16-148410-0",
"chapter" : [
{
"chapter_name": "Chapter1",
"chapter_desc": "Before getting into computer programming, let us first understand computer programs and what they..."
},
{
"chapter_name": "Chapter2",
"chapter_desc": "Today computer programs are being used in almost every field, household, agriculture, medical, entertainment, defense.."
},
{
"chapter_name": "Chapter3",
"chapter_desc": "MS Word, MS Excel, Adobe Photoshop, Internet Explorer, Chrome, etc., are..."
},
{
"chapter_name": "Chapter4",
"chapter_desc": "Computer programs are being used to develop graphics and special effects in movie..."
}
]
}
使用NEST创建索引非常简单
var client = new ElasticClient();
client.CreateIndex("index-name");
这将创建一个索引,其中包含为节点定义的默认分片数和副本数。
将表示为json的文档索引到索引中
var json = @"{
""BookName"": ""Book1"",
""ISBN"": ""978-3-16-148410-0"",
""chapter"" : [
{
""chapter_name"": ""Chapter1"",
""chapter_desc"": ""Before getting into computer programming, let us first understand computer programs and what they...""
},
{
""chapter_name"": ""Chapter2"",
""chapter_desc"": ""Today computer programs are being used in almost every field, household, agriculture, medical, entertainment, defense..""
},
{
""chapter_name"": ""Chapter3"",
""chapter_desc"": ""MS Word, MS Excel, Adobe Photoshop, Internet Explorer, Chrome, etc., are...""
},
{
""chapter_name"": ""Chapter4"",
""chapter_desc"": ""Computer programs are being used to develop graphics and special effects in movie...""
}
]
}";
var indexResponse = client.LowLevel.Index<string>("index-name", "type-name", json);
if (!indexResponse.Success)
Console.WriteLine(indexResponse.DebugInformation);
在这里,我们通过使用低等级客户机索引JSON,提供NEST .LowLevel
物业ElasticClient
。
要搜索索引文档
// refresh the index so that newly indexed documents are available
// for search without waiting for the refresh interval
client.Refresh("index-name");
var searchResponse = client.Search<dynamic>(s => s
.Index("index-name")
.Type("type-name")
.Query(q => q
.Match(m => m
.Query("Photoshop")
.Field("chapter.chapter_desc")
)
)
);
这将返回索引的文档。 Search<T>()
使用的泛型类型参数dynamic
意味着生成的文档将被反序列化为JObject
类型。
当我们创建索引时,我们没有为我们的类型type-name
指定映射,因此Elasticsearch从json文档的结构推断出映射。 这是动态映射 ,对于许多情况都很有用,但是,如果您知道要发送的文档的结构并且不会破坏性地更改它,那么您可以为该类型指定映射 。 在这个特定示例中执行此操作的优点是, chapter
数组将被推断为object
类型映射,但如果您想要搜索单个章节的章节名称和章节描述,那么您可能希望将chapter
映射为nested
类型 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.