栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Elasticsearch C#Mpdreamz / NEST客户端在嵌套字段上进行构面

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Elasticsearch C#Mpdreamz / NEST客户端在嵌套字段上进行构面

嗨,NEST的作者在这里,

如果您使用注释,则需要手动调用

var createIndex = client.CreateIndex("default_index", new IndexSettings { });client.Map<Movie>();

在第一次调用索引之前。

Nest
不会将映射应用于每个索引调用,因为这会产生过多的开销。如果弹性索引的旧版本不存在并且不需要
CreateIndex
调用,则只会创建该索引。

由于您想使用嵌套类型,因此必须传递

.Nested("genres")
给facet调用。

您看到的数字实际上是嵌套的docid :)

这是我修改后的program.cs,可以正常工作:

using System;using System.Collections.Generic;using System.Linq;using Nest;namespace Demo{  class Program  {    public class Movie    {      public int Id { get; set; }      public string Title { get; set; }      public string Description { get; set; }      [ElasticProperty(Type=FieldType.nested)]      public List<Genre> Genres { get; set; }      public int Year { get; set; }    }    public class Genre    {      //        public int Id { get; set; }      [ElasticProperty(Index = FieldIndexOption.not_analyzed)]      public string GenreTitle { get; set; }    }    static void Main(string[] args)    {      var setting = new ConnectionSettings("localhost", 9200);      setting.SetDefaultIndex("default_index");      var client = new ElasticClient(setting);      // delete previous index with documents      client.DeleteIndex<Movie>();      var createIndexResult = client.CreateIndex("default_index", new IndexSettings { });      var mapResult = client.Map<Movie>();      // put documents to the index      var genres = new List<Genre>();      for (var i = 0; i < 100; i++)        genres.Add(new Genre { GenreTitle = string.Format("Genre {0}", i) });      for (var i = 0; i < 1000; i++)      {        client.Index(new Movie        {          Id = i,          Description = string.Format("Some movie description {0}", i),          Title = string.Format("Movie Title {0}", i),          Year = 1980 + (i % 10),          Genres = genres.OrderBy(x => Guid.NewGuid()).Take(10).ToList()        });      }      // query with facet on nested field property genres.genreTitle      var queryResults = client.Search<Movie>(x => x   .From(0)   .Size(10)   .MatchAll()   .FacetTerm(t => t       .onField(f => f.Year)       .Size(30))   .FacetTerm(t => t       .Size(5)       .onField(f => f.Genres.Select(f1 => f1.GenreTitle))       .Nested("genres")   )      );      var yearFacetItems = queryResults.FacetItems<FacetItem>(p => p.Year);      foreach (var item in yearFacetItems)      {        var termItem = item as TermItem;        Console.WriteLine(string.Format("{0} ({1})", termItem.Term, termItem.Count));      }      var genresFacetItems = queryResults.FacetItems<FacetItem>(p => p.Genres.Select(f => f.GenreTitle));      foreach (var item in genresFacetItems)      {        var termItem = item as TermItem;        Console.WriteLine(string.Format("{0} ({1})", termItem.Term, termItem.Count));      }    }  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403680.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号