/// <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); }
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() { }; }
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"); }
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)); }