如何使用ES的过滤器功能将传入的文档与我的查询相匹配? 我的疑问是“最大赢家”
我正在使用ES v6和相同版本的NEST库。
这是我的班级
public class PercolatedQuery
{
public string Subject { get; set; }
public string Body { get; set; }
public string URL { get; set; }
public DateTime? Date { get; set; }
public QueryContainer Query { get; set; }
}
这是我的设置
Uri node = new Uri("http://localhost:9200/");
this.Settings = new ConnectionSettings(node)
.DisableDirectStreaming()
.DefaultIndex("mytestIndex");
this.Client = new ElasticClient(this.Settings);
if (!this.Client.IndexExists("mytestIndex").Exists)
{
this.Client.CreateIndex("mytestIndex", c => c
.Settings(s => s
.NumberOfShards(1)
.NumberOfReplicas(0)
)
.Mappings(m => m
.Map<PercolatedQuery>(mm => mm
.AutoMap()
.Properties(p => p
// map the query field as a percolator type
.Percolator(pp => pp
.Name(n => n.Query)
)
)
)
)
);
this.Client.Alias(a => a
.Add(add => add
.Index("mytestIndex")
.Alias("testAlias")
));
}
答案 0 :(得分:0)
我必须保存查询,然后我可以搜索文档
PercolatedQuery documentQuery = new PercolatedQuery
{
Id = "PercolatedQuery",
Query = new MatchQuery
{
Field = Infer.Field<PercolatedQuery>(entry => entry.Body),
Query = "healthcare biggest"
}
};
Client.Index(documentQuery,
d => d.Index("mytestIndex").Refresh(Refresh.WaitFor));
PercolatedQuery document1 = new PercolatedQuery { Body = "healthcare biggest winner" };
Client.Search<PercolatedQuery>(s => s
.Query(q => q
.Percolate(p => p
.Field(f => f.Query)
.Document(document1)
)
)
);