elasticsearch 无嵌套的弹性搜索查询,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 无嵌套的弹性搜索查询,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 无嵌套的弹性搜索查询

elasticsearch 无嵌套的弹性搜索查询,elasticsearch,nest,elasticsearch,Nest,我已经厌倦了试图找出如何使用Nest以我想要的方式查询我的数据——它似乎总是推断出错误的url来发布搜索请求 无论如何,我已经把这个看起来很难看的代码放在一起了,看起来很有效: using (var client = new HttpClient()) { client.BaseAddress = node; var content = new StringContent("{\"size\": 0,\"qu

我已经厌倦了试图找出如何使用Nest以我想要的方式查询我的数据——它似乎总是推断出错误的url来发布搜索请求

无论如何,我已经把这个看起来很难看的代码放在一起了,看起来很有效:

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()
    )
);