我摄取了这种简化格式的文档:
client.Search<Document>
(
scr => scr.Index(IndexName)
.From(0)
.Size(100)
.MatchAll()
.Scroll(scrollTimeout)
)
;
我可以使用以下方法循环/滚动所有文档:
return client.Search<Document>
(
scr => scr.Index(IndexName)
.From(0)
.Size(100)
.MatchAll()
.Scroll(scrollTimeout).Query(q => q
.Match(m => m
.Field(f => f.Id)
.Query("bla")
)
)
)
;
是否可以只关注ID以特定字符串结尾的文档(例如bla)?
我尝试过:
return client.Search<Document>
(
scr => scr.Index(IndexName)
.From(0)
.Size(100)
.MatchAll()
.Scroll(scrollTimeout).Query(q => q
.MoreLikeThis(sn => sn
.Fields(ff => ff
.Field(f => f.Id)
)
也尝试过:
return client.Search<Document>
(
scr => scr.Index(IndexName)
.From(0)
.Size(100)
.MatchAll()
.Scroll(scrollTimeout).Query(q => q
.Wildcard(c => c
.Name("named_query")
.Boost(1.1)
.Field(p => p.Id)
.Value("bla")
.Rewrite(MultiTermQueryRewrite.TopTermsBoost(10))
)
)
)
;
使用通配符也不起作用:
return client.Search<Document>
(
scr => scr.Index(IndexName)
.From(0)
.Size(1000)
.MatchAll().Scroll(scrollTimeout).Query(q => q
.Regexp(c => c
.Field(p => p.Id)
.Value("bla$")
)
)
)
;
请注意,这适用于其他字段。因此,我目前的预感是,这样的事情对Ids来说不起作用。
Filip Cordas建议使用正则表达式。这也行不通:
var searchResponses = client.Search<Document>
(
scr => scr.Index(indexName)
.From(0)
.Size(1000)
.Query(q => q.Regexp(c => c
.Field(p => p.Id)
.Value("bla$")
)
)
)
;
根据Russ Cam的要求。我尝试了以下操作,但也无效:
{{1}}