public void TestFilterdQuery() { var termQuery = new TermQuery("type", "common"); var termFilter = new TermFilter("age", "24"); var filteredQuery = new FilteredQuery(termQuery,termFilter); var result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); var wildQuery = new WildcardQuery("name", "张三*"); termFilter = new TermFilter("age", "23"); filteredQuery = new FilteredQuery(wildQuery, termFilter); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三丰",result2.GetHits().Hits[0].Source["name"]); var boolQuery = new BoolQuery(); boolQuery.Must(new TermQuery("type", "common")); boolQuery.Must(new WildcardQuery("name", "张三*")); boolQuery.Should(new TermQuery("age", 24)); filteredQuery=new FilteredQuery(boolQuery,new TermFilter("age","23")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三丰", result2.GetHits().Hits[0].Source["name"]); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("age", "24")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三", result2.GetHits().Hits[0].Source["name"]); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(2, result2.GetTotalCount()); Assert.AreEqual(2, result2.GetHits().Hits.Count); //test should boolQuery = new BoolQuery(); boolQuery.Must(new TermQuery("type", "common")); boolQuery.Must(new WildcardQuery("name", "张*")); boolQuery.Should(new TermQuery("age", 24)); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(3, result2.GetTotalCount()); Assert.AreEqual(3, result2.GetHits().Hits.Count); boolQuery = new BoolQuery(); boolQuery.Must(new TermQuery("type", "common")); boolQuery.Must(new WildcardQuery("name", "张*")); boolQuery.Should(new TermQuery("age", 24)); boolQuery.Should(new TermQuery("age", 28)); boolQuery.Should(new TermQuery("age", 22)); //must+should ->[should] make nonsense filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(3, result2.GetTotalCount()); Assert.AreEqual(3, result2.GetHits().Hits.Count); boolQuery = new BoolQuery(); boolQuery.Should(new TermQuery("age", 24)); boolQuery.Should(new TermQuery("age", 28)); boolQuery.Should(new TermQuery("age", 22)); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三", result2.GetHits().Hits[0].Source["name"]); boolQuery.Should(new TermQuery("age", 25)); filteredQuery = new FilteredQuery(boolQuery, new TermFilter("type", "common")); result2 = client.Search(index, "type" , filteredQuery, 0, 5); Assert.AreEqual(2, result2.GetTotalCount()); Assert.AreEqual(2, result2.GetHits().Hits.Count); }
public void TestMatchAllQuery() { var filter = new TermFilter("gender", "true");//new TermsQuery("gender", "true", "false"); var filterQuery = new FilteredQuery( new MatchAllQuery(),filter); var result = client.Search(index, "type" , filterQuery, 0, 5); Assert.AreEqual(50, result.GetTotalCount()); Assert.AreEqual(5, result.GetHits().Hits.Count); var filter1 = new TermFilter("gender", "true"); filterQuery = new FilteredQuery(new MatchAllQuery(), filter1); result = client.Search(index, "type" , filterQuery, 0, 5); Assert.AreEqual(50, result.GetTotalCount()); Assert.AreEqual(5, result.GetHits().Hits.Count); }
public void TestPrefixQuery() { var prefixQuery = new PrefixQuery("name", "张"); var termFilter = new TermFilter("type", "common"); var q = new FilteredQuery(prefixQuery,termFilter); var result = client.Search(index, "type" , q, 0, 5); Assert.AreEqual(3, result.GetTotalCount()); prefixQuery = new PrefixQuery("name", "张三"); termFilter = new TermFilter("type", "common"); q = new FilteredQuery(prefixQuery, termFilter); result = client.Search(index, "type" , q, 0, 5); Assert.AreEqual(2, result.GetTotalCount()); }
public void TestNestedFilter() { // { // "name": "jackson", // "resume": { // "age": 22, // "gender": "male", // "mail": "*****@*****.**" // } //} var obj = "{ \"type\": \"vip\", \"name\": \"jackson\", \"resume\": { \"age\": 22, \"gender\": \"male\", \"mail\": \"[email protected]\" }}"; var op= client.Index(index, "person", "key1", obj); Assert.True(op.Success); obj = "{ \"type\": \"vip\", \"name\": \"tom\", \"resume\": { \"age\": 24, \"gender\": \"female\", \"mail\": \"[email protected]\" }}"; op = client.Index(index, "person", "key2", obj); Assert.True(op.Success); client.Refresh(); var nestFilter = new NestedFilter("person", new TermQuery("resume.age", 22), true); var q = new FilteredQuery(new TermQuery("type","vip"), nestFilter); var result=client.Search(index, "person", q, 0, 5); Assert.AreEqual(1,result.GetTotalCount()); Assert.AreEqual("jackson", result.GetHits().Hits[0].Source["name"]); }
public void TestScriptFilter() { //age 23 24 25 var query = new TermQuery("type", "common"); var dict = new Dictionary<string, object>(); dict["param1"] = 20; var filter = new ScriptFilter("doc['age'].value > param1",dict); var filterQ = new FilteredQuery(query, filter); var result= client.Search(index, "type" , filterQ, 0, 5); Assert.AreEqual(3,result.GetTotalCount()); dict = new Dictionary<string, object>(); dict["param1"] = 23; filter = new ScriptFilter("doc['age'].value > param1", dict); filterQ = new FilteredQuery(query, filter); result = client.Search(index, "type" , filterQ, 0, 5); Assert.AreEqual(2, result.GetTotalCount()); dict = new Dictionary<string, object>(); dict["param1"] = 24; filter = new ScriptFilter("doc['age'].value >= param1", dict); filterQ = new FilteredQuery(query, filter); result = client.Search(index, "type" , filterQ, 0, 5); Assert.AreEqual(2, result.GetTotalCount()); dict = new Dictionary<string, object>(); dict["param1"] = 25; filter = new ScriptFilter("doc['age'].value >= param1", dict); filterQ = new FilteredQuery(query, filter); result = client.Search(index, "type" , filterQ, 0, 5); Assert.AreEqual(1, result.GetTotalCount()); dict = new Dictionary<string, object>(); dict["param1"] = 25; filter = new ScriptFilter("doc['age'].value < param1", dict); filterQ = new FilteredQuery(query, filter); result = client.Search(index, "type" , filterQ, 0, 5); Assert.AreEqual(2, result.GetTotalCount()); dict = new Dictionary<string, object>(); dict["param1"] = 20; filter = new ScriptFilter("doc['age'].value < param1", dict); filterQ = new FilteredQuery(query, filter); result = client.Search(index, "type" , filterQ, 0, 5); Assert.AreEqual(0, result.GetTotalCount()); }
public void TestNotFilter() { var termFilter = new TermFilter("age", 24); var notFilter = new NotFilter(termFilter); var termQuery = new TermQuery("type", "common"); var q = new FilteredQuery(termQuery, notFilter); var result2 = client.Search(index, "type" , q, 0, 5); Assert.AreEqual(2, result2.GetTotalCount()); Assert.AreEqual(2, result2.GetHits().Hits.Count); }
public void TestOrFilter() { var termFilter = new TermFilter("age", 24); var termFilter1 = new TermFilter("name", "张三丰"); var orFilter = new OrFilter(termFilter,termFilter1); var termQuery = new TermQuery("type", "common"); var q = new FilteredQuery(termQuery, orFilter); var result = client.Search(index, "type" , q, 0, 5); Assert.AreEqual(2, result.GetTotalCount()); }
public void TestAndFilter() { var termFilter = new TermFilter("age", 24); // var termFilter1 = new TermFilter("name", "张三"); var andFilter = new AndFilter(termFilter); var termQuery = new TermQuery("type", "common"); var q = new FilteredQuery(termQuery,andFilter); var result2 = client.Search(index, "type" , q, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三", result2.GetHits().Hits[0].Source["name"]); var constantQuery = new ConstantScoreQuery(andFilter); result2 = client.Search(index, "type" , constantQuery, 0, 5); Assert.AreEqual(1, result2.GetTotalCount()); Assert.AreEqual(1, result2.GetHits().Hits.Count); Assert.AreEqual("张三", result2.GetHits().Hits[0].Source["name"]); }