【问题标题】:Nest QueryContainer usageNest QueryContainer 使用
【发布时间】:2017-11-02 16:56:01
【问题描述】:

您好,我可以使用 DateRangeQuery 数组填充 QueryContainer,如下所示 QueryContainer infantryDateQuerys = null;

        if (!string.IsNullOrEmpty((item.marriage_date)))
            {
                DateRangeQuery query = new DateRangeQuery();
                query.Field = "marriages.marriage_date";
                query.Name = item.marriage_date;
                query.GreaterThanOrEqualTo = item.marriage_date;
                query.LessThanOrEqualTo = item.marriage_date;

                marriageDateQuerys &= query;
            }

但是当我使用 QueryContainer 来使用 MatchQuery/TermQuery 来填充数据时,它并没有发生。

           QueryContainer marriageSpouseFirstNameQuerys = null;  


            if (!string.IsNullOrEmpty((item.spouse_first_name)))
            {
                MatchQuery query = new MatchQuery();
                query.Field = "marriages.spouse_first_name";
                query.Name = item.spouse_first_name;
                marriageSpouseFirstNameQuerys &= query;
            }

查询对象是在最后一个 if 条件下创建的,但结婚配偶FirstNameQuerys 没有填充相同的条件。我什至尝试了结婚配偶名字查询 += 查询;但没有任何成功

【问题讨论】:

    标签: elasticsearch nest elasticsearch-plugin


    【解决方案1】:

    没试过,但是你可以试试这样的

                  Query = new QueryContainer(new BoolQuery
                        {
                            Must = new List<QueryContainer>
                            {
                                new MatchQuery
                                {
                                    //props
                                },
                                new TermQuery
                                {
                                    Field = field
                                    Value = value
                                },
                            }
                        })
    

    【讨论】:

    • 会试试看效果如何
    • 我使用了您的代码并进行了一些更改以使其符合我的要求
    【解决方案2】:

    在使用 eyildiz 答案进行更改后,以下代码对我有用

           if (!string.IsNullOrEmpty((item.spouse_last_name)))
                    {
                        marriageSpouseLastNameQuery = new QueryContainer(
                            new MatchQuery
                            {
                                Field = "marriages.spouse_last_name",
                                Query = item.spouse_last_name
                            });
                        lstmarriageSpouseLastNameQuerys.Add(marriageSpouseLastNameQuery);
                    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2018-11-12
      • 2018-07-26
      • 2020-12-09
      • 1970-01-01
      • 2022-09-24
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      相关资源
      最近更新 更多