使用查询字符串的弹性搜索过滤器

时间:2017-04-27 10:42:26

标签: elasticsearch

使用查询字符串OnFieldWithBoosts添加了不同的字段需要应用过滤器,字符串字段记录工作正常。

Sample Code to fetch result

对于包含 .Add(id,2)的ID字段,它不会返回基于ID的结果。

当我使用term时,ID字段记录工作正常。 enter image description here

现在在查询部分, 我使用了OR条件,所以当第一个条件满足时,它不会检查第二个条件。 如果我使用AND条件,那么它会检查条件匹配。

但我需要先将查询结果和第二个查询结果连成一个结果

CODE:

           var result = client.Search<dynamic>(q => q
                        .Indices("test")
                        .Types("user")
                        .From(1)
                        .Size(10)
                        .MinScore(1.0)
                        .Fields("id", "createddate", "email", "modifieddate", "name", "companyname")  // Result set Fields Fields
                        .Query(q1 =>
                        {
                            qq = (q1.ConstantScore(a => a.Filter(b => b.Term("id", searchKeyword)))) 
                                || q1.QueryString(qs => qs.Query(searchKeyword).OnFieldsWithBoost(a => a.Add("notes",3).Add("email", 2).Add("name", 2)));                                
                            return qq;
                        })
                        ); 

0 个答案:

没有答案