コード例 #1
0
        /// <summary>
        /// Generates Exists query for Elasticsearch for the given article address.
        /// </summary>
        /// <param name="articleAddress">query will be generated for this article address</param>
        /// <returns>Exists query for Elasticsearch</returns>
        private ExistsQuery GetElasticExistsQuery(string articleAddress)
        {
            var elasticExistsQuery = new ExistsQuery()
            {
                Query = new Models.Elasticsearch.Existence.Query()
                {
                    ConstantScore = new ConstantScore()
                    {
                        Filter = new Filter()
                        {
                            Term = new Term()
                            {
                                AddressKeyword = articleAddress
                            }
                        }
                    }
                },
                Source = new List <string>()
                {
                    "Title",
                    "Address"
                }
            };

            return(elasticExistsQuery);
        }
コード例 #2
0
ファイル: ESTest.cs プロジェクト: lulzzz/WCloud
        static void DifferentQuerysInEs(QueryContainer qc)
        {
            //匹配查询
            qc &= new MatchQuery()
            {
                Field              = "analyized field name",
                Query              = "关键词",
                Operator           = Operator.Or,
                MinimumShouldMatch = "100%",
                Analyzer           = "ik_smart"
            };

            //https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax
            //https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html
            //query string自定义了一个查询语法
            var qsq = new QueryStringQuery()
            {
            };

            //https://www.elastic.co/guide/cn/elasticsearch/guide/current/_wildcard_and_regexp_queries.html
            //使用通配符查询,比如name.*
            var wcq = new WildcardQuery()
            {
            };

            //精准匹配,不分词
            var tq = new TermQuery()
            {
            };

            //字段存在且不为空
            var eq = new ExistsQuery()
            {
            };

            //https://www.elastic.co/guide/cn/elasticsearch/guide/current/fuzzy-query.html
            //模糊查询,它会计算关键词和目标字段的“距离”。如果在允许的距离范围内,计算拼写错误也可以匹配到
            var fq = new FuzzyQuery()
            {
            };

            //范围查询
            var drq = new DateRangeQuery()
            {
            };
            var nrq = new NumericRangeQuery()
            {
            };
        }
コード例 #3
0
        public void Exists_query_must_transform_correclty_to_ES()
        {
            var query = new ExistsQuery("type");

            Assert.IsTrue(query.Field == "field");
            Assert.IsTrue(query.Value.ToString() == "type");

            string json = query.ToString();
            var    jo   = JsonObject.Parse(json);
            var    q    = jo.ToQuery();

            Assert.IsTrue(q.Type == QueryType.ExistsQuery);
            query = q as ExistsQuery;
            Assert.IsTrue(query.Field == "field");
            Assert.IsTrue(query.Value.ToString() == "type");
        }
コード例 #4
0
        public override Task <IQueryNode> VisitAsync(TermNode node, IQueryVisitorContext context)
        {
            if (!String.Equals(node.Field, "fixed", StringComparison.OrdinalIgnoreCase))
            {
                return(Task.FromResult <IQueryNode>(node));
            }

            if (!Boolean.TryParse(node.Term, out bool isFixed))
            {
                return(Task.FromResult <IQueryNode>(node));
            }

            var query = new ExistsQuery {
                Field = _dateFixedFieldName
            };

            node.SetQuery(isFixed ? query : !query);

            return(Task.FromResult <IQueryNode>(node));
        }