당신이 실제 문서를 따라 간다면, 문서를 얻기위한 쿼리는 아마도 집계가 아니라 필요한 것 일 것입니다. 하나의 요청으로 Multi Search API을 사용하여 여러 개의 쿼리를 실행할 수 있습니다. NEST 2.x 이상인 경우
var indexname = "index-name";
var typename = "type-name";
var fieldname = "field-name";
var result = client.MultiSearch(ms => ms
.Index(indexname)
.Type(typename)
.Search<dynamic>("search1", s => s
.Query(q => +q
.DateRange(r => r
.Field(fieldname)
.LessThan("2016-03-30T19:40:50+00:00")
)
)
)
.Search<dynamic>("search2", s => s
.Query(q => +q
.DateRange(r => r
.Field(fieldname)
.GreaterThan("2016-03-15T19:40:50+00:00")
)
)
)
);
var search1Documents = result.GetResponse<dynamic>("search1").Documents;
var search2Documents = result.GetResponse<dynamic>("search2").Documents;
이렇게하면 각 쿼리와 일치하는 처음 10 개의 문서가 반환됩니다. 검색 할 때마다 .From()
및 .Size()
을 사용하여 결과 매김을 지정할 수 있습니다.
편집이 : NEST 1.x에서와
, 다중 검색 요청이 보이는 같은
var indexname = "index-name";
var typename = "type-name";
var fieldname = "field-name";
var result = client.MultiSearch(ms => ms
.FixedPath(indexname, typename)
.Search<dynamic>("search1", s => s
.Query(q => q
.Filtered(fq => fq
.Filter(fqf => fqf
.Range(r => r
.OnField(fieldname)
.Lower("2016-03-30T19:40:50+00:00")
)
)
)
)
)
.Search<dynamic>("search2", s => s
.Query(q => q
.Filtered(fq => fq
.Filter(fqf => fqf
.Range(r => r
.OnField(fieldname)
.Greater("2016-03-15T19:40:50+00:00")
)
)
)
)
)
);
var search1Documents = result.GetResponse<dynamic>("search1").Documents;
var search2Documents = result.GetResponse<dynamic>("search2").Documents;
당신은하지만, 내가 Elasticsearch의 최신 5.x의 버전으로 업그레이드하는 것이 좋습니다 수 있다면 NEST는 all Elasticsearch 1.x versions are now end of line for support since 16th January 2017입니다. 최소한, Elasticsearch 1.4와 호환되어야하는 upgrading NEST to the latest 1.x version을 권하고 싶습니다.
안녕하세요,이 줄에 쿼리를 쓰는 동안 오류가 발생합니다. var result = client.MultiSearch (ms => ms .Index (indexname) .Type (typename) ........ Nest.MultisearchDescription에 Index 정의가 없습니다. – Nilanjana
NEST의 nuget 패키지 버전은 무엇입니까? –
안녕하세요, 둥지 버전 1.4를 사용하고 있습니다. – Nilanjana