elasticsearch 无嵌套的弹性搜索查询
我已经厌倦了试图找出如何使用Nest以我想要的方式查询我的数据——它似乎总是推断出错误的url来发布搜索请求 无论如何,我已经把这个看起来很难看的代码放在一起了,看起来很有效:elasticsearch 无嵌套的弹性搜索查询,elasticsearch,nest,elasticsearch,Nest,我已经厌倦了试图找出如何使用Nest以我想要的方式查询我的数据——它似乎总是推断出错误的url来发布搜索请求 无论如何,我已经把这个看起来很难看的代码放在一起了,看起来很有效: using (var client = new HttpClient()) { client.BaseAddress = node; var content = new StringContent("{\"size\": 0,\"qu
using (var client = new HttpClient())
{
client.BaseAddress = node;
var content = new StringContent("{\"size\": 0,\"query\": {\"bool\": {\"must\": [{\"wildcard\": {\"FlogDetail.AdditionalInfo.QueryString-filter[slug]\": \"*" + slug + "*\"}},{\"range\": {\"@timestamp\": {\"gte\": \"now-1d/d\",\"lt\": \"now\"}}}]}},\"aggs\": {\"results\": {\"date_histogram\": {\"field\": \"@timestamp\",\"interval\": \"hour\"}}}}", Encoding.UTF8, "application/json");
var result = await client.PostAsync(@"usage*/_search", content);
string resultContent = await result.Content.ReadAsStringAsync();
JObject o = JObject.Parse(resultContent);
return o;
}
现在,在我让它变得更理智和漂亮之前,像这样的问题有没有
我使用Nest的主要问题是,我找不到一种查询通配符索引的方法,您可以看到,我可以用普通的旧C语言进行查询#
如果有人知道最后一点的答案,我将不胜感激 按照您提出的方式查询Elasticsearch没有什么错。NEST支持查询通配符、单个索引、多个索引,例如
var searchResponse = client.Search<MyDocument>(s => s
.Index("usage*")
.AllTypes()
.Query(q => q
.MatchAll()
)
);
NEST的约定是将POCO映射到索引中的类型,您可以使用ConnectionSettings上的DefaultMappingFor(…)
为给定POCO设置约定
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var settings = new ConnectionSettings(pool)
.DefaultMappingFor<MyDocument>(m => m
.IndexName("usage*")
);
var client = new ElasticClient(settings);
var searchResponse = client.Search<MyDocument>(s => s
.AllTypes()
.Query(q => q
.MatchAll()
)
);
var-pool=新的SingleNodeConnectionPool(新Uri(“http://localhost:9200"));
var设置=新连接设置(池)
.DefaultMappingFor(m=>m
.IndexName(“用法*”)
);
var客户端=新的ElasticClient(设置);
var searchResponse=client.Search(s=>s
.AllTypes()
.Query(q=>q
.MatchAll()
)
);
但是,对于指定的POCO,没有指定应省略类型名称的约定,因此在搜索请求中仍然需要调用.AllTypes()
,以便在匹配用法*
的索引中搜索所有类型-谢谢!这正是我要找的!
var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200"));
var settings = new ConnectionSettings(pool)
.DefaultMappingFor<MyDocument>(m => m
.IndexName("usage*")
);
var client = new ElasticClient(settings);
var searchResponse = client.Search<MyDocument>(s => s
.AllTypes()
.Query(q => q
.MatchAll()
)
);