ASP.NET MVC本地链接elasticsearch。
安装了jdk,并且https://localhost:9200显示出来了,但不知道在MVC中的控制器怎么链接本地elasticsearch。
代码
public IActionResult Conn() {
var lowlevelClient = new ElasticLowLevelClient();
return View(lowlevelClient);
}
问题1:ASP.NET MVC是否可以算C#代码。
问题2:ASP.NET MVC是否可以本地链接elasticsearch,如果不可以应该创建什么项目。
问题3:ASP.NET MVC可以本地链接的话,应该怎么写。
NEST 版本 7.0.0
Elasticsearch.Net 版本 7.0.0
var pool = new StaticConnectionPool(new Uri[] { new Uri("https://localhost:9200") });
//未设置帐号密码 直接空字符串
var setting = new ConnectionSettings(pool).BasicAuthentication("帐号", "密码");
ElasticClient elasticClient= new ElasticClient(setting.DisableDirectStreaming());
var query = new List<Func<QueryContainerDescriptor<QueryDto>, QueryContainer>>();
//IN查询
var queryStates = new List<int> { 0, 1, 2, 3, 4 };
query.Add(q => q.Terms(t => t.Field(f => f.scanstate).Terms(queryStates)));
//精确匹配
query.Add(q => q.Terms(m => m.Field(f => f.code.Suffix("keyword")).Terms(request.Code)));
//时间区间查询
query.Add(q => q.DateRange(d => d.Field(f => f.qd).TimeZone("+08:00").GreaterThanOrEquals(“2022-01-01 09:00:00”)));
query.Add(q => q.DateRange(d => d.Field(f => f.qd).TimeZone("+08:00").LessThanOrEquals("2020-05-01 09:00:00")));
//剩下的自己摸索
Func<SearchDescriptor<QueryDto>, ISearchRequest> queryRequest = r => r.Index(Indices.Index(indexPatterns))
.IgnoreUnavailable()
.Query(q => q.Bool(b => b.Must(query)))
.From(0)
//elasticsearch scroll 用法 百度一下
.Size(querySize).Scroll("2m")
.Sort(s => s.Descending(d => d.qd));
var queryRes = elasticClient.Search(queryRequest);
var querylist = queryRes.Documents.ToList();
//剩下的业务自己处理
var settings = new ConnectionConfiguration(new Uri("http://localhost:9200/"))
.RequestTimeout(TimeSpan.FromMinutes(2));
var lowlevelClient = new ElasticLowLevelClient(settings);
var indexResponse = lowlevelClient.Index<byte[]>("user", "guest", user.Id.ToString(), user);
好的,解决了,谢谢