Esempio n. 1
0
        public int GetCount(string keyword, string type)
        {
            int count = 0;


            string indexname = ConfigurationManager.AppSettings["IndexName"].ToString();
            string typename  = ConfigurationManager.AppSettings["TypeName"].ToString();

            if (string.IsNullOrEmpty(type))
            {
                type = "_all";
            }
            QueryContainer matchQuery = new MatchQuery()
            {
                Field = type, Query = keyword, Operator = Operator.And
            };
            QueryContainer querystring = new QueryStringQuery()
            {
                Query = keyword, DefaultOperator = Operator.And
            };
            //调用仅取数量方法
            var counts = Connect.GetSearchClient().Count <NewsBase>(s => s
                                                                    .Index(indexname)
                                                                    .Type(typename)
                                                                    .Query(matchQuery)
                                                                    );

            count = (int)counts.Count;
            return(count);
        }
        public async Task <TimedEntity <IEnumerable <Book> > > SearchBooks(string query)
        {
            var authorQuery = new MatchQuery()
            {
                Field = Infer.Field <Book>(f => f.Author),
                Query = query,
            };

            var titleQuery = new MatchQuery()
            {
                Field = Infer.Field <Book>(f => f.Title),
                Query = query,
            };


            Stopwatch st = new Stopwatch();

            st.Start();

            var response = await elasticClient.SearchAsync <Book>(
                x => x.Index(BookIndex)
                .From(0)
                .Size(50)
                .Query(q => q.Bool(b => b.Should(authorQuery, titleQuery)))
                );

            st.Stop();
            _logger.LogCritical("Elastic search call: " + st.ElapsedMilliseconds);

            return(new TimedEntity <IEnumerable <Book> > {
                Entity = response.Documents.ToArray(), MilliSeconds = st.ElapsedMilliseconds
            });
        }
Esempio n. 3
0
 public IEnumerable<string> GetIDs(string keyword, string field, int start, int size)
 {
     string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
     string typename = ConfigurationManager.AppSettings["CRMMemberType"].ToString();
     //QueryContainer query = new QueryStringQuery() { Query = keyword, DefaultOperator = Operator.Or, DefaultField = type};
     //QueryContainer termQuery = new TermQuery { Field = type, Value = keyword };
     //QueryContainer prefixQuery = new PrefixQuery { Field = type, Value = keyword };
     if (string.IsNullOrEmpty(field))
     { field = "_all"; }
     else { field = field.ToLower(); }
     QueryContainer matchQuery = new MatchQuery() { Field = field, Query = keyword, Operator = Operator.And };
     var searchResults = Connect.GetSearchClient().Search<Member>(s => s
         .Index(indexname)
         .Type(typename)
         .Query(matchQuery)
         .Fields(f=>f.Id)
         //.Sort(st => st.OnField(f => f.newsid).Order(SortOrder.Descending))  /*按ID排序,id为数字,排序正常*/
         .From(start)
         .Size(size)
     );
     //List<Member> eslist = new List<Member>(searchResults.Documents);
     List<string> eslist = new List<string>();
     foreach (var hit in searchResults.Hits)
     {
         eslist.Add(hit.Id);
     }
     return eslist;
     //return eslist.Select(s=>s.Id);
 }
Esempio n. 4
0
        public int GetCount(string keyword, string field)
        {
            int    count     = 0;
            string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
            string typename  = ConfigurationManager.AppSettings["CRMMemberType"].ToString();

            //QueryContainer query = new QueryStringQuery() { Query = keyword, DefaultOperator = Operator.Or, DefaultField = type };
            //QueryContainer termQuery = new TermQuery { Field = type, Value = keyword };
            //QueryContainer prefixQuery = new PrefixQuery { Field = type, Value = keyword };
            if (string.IsNullOrEmpty(field))
            {
                field = "_all";
            }
            else
            {
                field = field.ToLower();
            }
            QueryContainer matchQuery = new MatchQuery()
            {
                Field = field, Query = keyword, Operator = Operator.And
            };
            //调用仅取数量方法
            var counts = Connect.GetSearchClient().Count <Member>(s => s
                                                                  .Index(indexname)
                                                                  .Type(typename)
                                                                  .Query(matchQuery)
                                                                  );

            count = (int)counts.Count;
            return(count);
        }
        public void Execute(IESIndex <Employee> context)
        {
            var client = context.GetClient();
            var query  = new QueryContainer();

            foreach (var skill in offer.RequaredSkills)
            {
                query &= new MatchQuery {
                    Field = new Field("skills.id"),
                    Query = skill.Id.ToString()
                };
            }
            var searchResponse = client.Search <ESEmployee>(s => s
                                                            .From(page)
                                                            .Size(size)
                                                            .Query(q => query)
                                                            );

            if (!searchResponse.IsValid)
            {
                this.AddErrors(new QueryExectutionFailedError(searchResponse.DebugInformation));
                return;
            }

            var employees = new List <Employee>();

            foreach (var doc in searchResponse.Documents)
            {
                employees.Add(doc);
            }

            SetValue(employees);
        }
        public IEnumerable <TModel> GetEntities(TType[] ids, string indexName)
        {
            if (!ids.Any())
            {
                return new List <TModel> {
                }
            }
            ;
            var value = new StringBuilder();

            foreach (var id in ids)
            {
                value.Append(id);

                value.Append(" ");
            }
            var queryContainer = new MatchQuery
            {
                Field = "id",
                Query = value.ToString()
            };
            var response = RetrieveQueryDocuments(queryContainer, indexName);

            if (!response.Any())
            {
                throw new EntityNotFoundException($"Entities with ids: \"{ids}\" not found in index \"{indexName}\"");
            }
            return(response);
        }
Esempio n. 7
0
 public List<NewsBase> GetList(string keyword, string field, int start, int size)
 {
     string indexname = ConfigurationManager.AppSettings["IndexName"].ToString();
     string typename = ConfigurationManager.AppSettings["TypeName"].ToString();
     if (string.IsNullOrEmpty(field))
     { field = "_all";}
     QueryContainer matchQuery = new MatchQuery() { Field = field, Query = keyword,Operator=Operator.And };
     //QueryContainer querystring = new QueryStringQuery() { Query = keyword, DefaultOperator = Operator.And };
     var searchResults = Connect.GetSearchClient().Search<NewsBase>(s => s
         .Index(indexname)
         .Type(typename)
         .Query(matchQuery)
         //.Fields("newsid")
         .Sort(st => st.OnField(f => f.Newsid).Order(SortOrder.Descending))  /*按ID排序,id为数字,排序正常*/
         .From(start)
         .Size(size)
         //.Highlight(h => h
         //     .OnFields(f => f
         //        .OnField("*")
         //        .PreTags("<b style='color:red'>")
         //        .PostTags("</b>")))
     );
     List<NewsBase> eslist = new List<NewsBase>(searchResults.Documents);
     return eslist;
 }
        public ActionResult GetData(string queryString = "", int pageIndex = 0, int pageSize = 5)
        {
            pageIndex++;
            var query = new MatchQuery() //多字段查询
            {
                Field = "TITLE",
                Boost = 2.2,
                Query = queryString
            } || new MatchQuery()
            {
                Field = "PUBLISHING_PLACE",
                Boost = 0.3,
                Query = queryString
            };
            //MatchQuery query = new MatchQuery() //单字段查询
            //{
            //    Field = "TITLE ^ 2.2",
            //    Query = queryString
            //};
            List <ISort> sort = new List <ISort> {
                new SortField {
                    Field = "_score", Order = SortOrder.Descending
                }
            };
            PageResult <MainRCJournalInfo> list  = _iService.PageResultSearcher(query, pageIndex, pageSize, sort);  //分页查询
            PageResult <MainRCJournalInfo> lis2t = _iService.PageResultSearcher2(queryString, pageIndex, pageSize); //分页查询

            return(Json(list));
        }
Esempio n. 9
0
        public async Task FindMatchAsync_ShouldBeEquivalentToMatch(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(83459632, game, state);

            var challenge = challengeFaker.FakeChallenge();

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(challenge);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var matchQuery = new MatchQuery(context);

                foreach (var match in challenge.Participants.SelectMany(participant => participant.Matches).ToList())
                {
                    //Act
                    var matchAsync = await matchQuery.FindMatchAsync(MatchId.FromGuid(match.Id));

                    //Arrange
                    matchAsync.Should().BeEquivalentTo(match);
                }
            }
        }
Esempio n. 10
0
        public async Task FindParticipantMatchesAsync_ShouldBeEquivalentToParticipantMatchList(Game game, ChallengeState state)
        {
            //Arrange
            var challengeFaker = TestData.FakerFactory.CreateChallengeFaker(89568322, game, state);

            var challenge = challengeFaker.FakeChallenge();

            using var factory = new InMemoryDbContextFactory <ChallengesDbContext>();

            await using (var context = factory.CreateContext())
            {
                var challengeRepository = new ChallengeRepository(context);

                challengeRepository.Create(challenge);

                await challengeRepository.CommitAsync();
            }

            await using (var context = factory.CreateContext())
            {
                var matchQuery = new MatchQuery(context);

                foreach (var participant in challenge.Participants)
                {
                    //Act
                    var matches = await matchQuery.FetchParticipantMatchesAsync(ParticipantId.FromGuid(participant.Id));

                    //Arrange
                    matches.Should().BeEquivalentTo(participant.Matches.ToList());
                }
            }
        }
Esempio n. 11
0
 public AmbiguousArgumentMatchException(DiscordIdType type, MatchQuery query, IDictionary <ulong, string> results)
     : base(GetMessage(type, query))
 {
     Query   = query;
     Type    = type;
     Results = results;
 }
Esempio n. 12
0
        public int GetCount(string keyword, string field)
        {
            string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
            string typename  = ConfigurationManager.AppSettings["CRMMemberType"].ToString();
            string ctype     = ConfigurationManager.AppSettings["CRMMTrackType"].ToString();

            if (string.IsNullOrEmpty(field))
            {
                field = "memo";
            }
            QueryContainer matchQuery = new MatchQuery()
            {
                Field = field.ToLower(), Query = keyword, Operator = Operator.And
            };
            QueryContainer hasChildQuery = new HasChildQuery()
            {
                Type = ctype, Query = matchQuery
            };
            var results = Connect.GetSearchClient().Count <Member>(c => c
                                                                   .Index(indexname)
                                                                   .Type(typename)
                                                                   .Query(hasChildQuery)
                                                                   );

            return((int)results.Count);
        }
Esempio n. 13
0
        public static MatchQuery BuildMatchQuery(Aliyun.TableStore.DataModel.Search.Query.MatchQuery query)
        {
            MatchQuery.Builder builder = MatchQuery.CreateBuilder();

            builder.SetFieldName(query.FieldName);
            builder.SetText(query.Text);
            if (query.MinimumShouldMatch != null)
            {
                builder.SetMinimumShouldMatch(query.MinimumShouldMatch.Value);
            }
            switch (query.Operator)
            {
            case Aliyun.TableStore.DataModel.Search.Query.QueryOperator.AND:
                builder.SetOperator(QueryOperator.AND);
                break;

            case Aliyun.TableStore.DataModel.Search.Query.QueryOperator.OR:
                builder.SetOperator(QueryOperator.OR);
                break;

            default:
                throw new ArgumentException("unsupported operator:" + query.Operator);
            }

            return(builder.Build());
        }
Esempio n. 14
0
        public List <MemberContact> GetList(string keyword, string field, int start, int size)
        {
            string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
            string typename  = ConfigurationManager.AppSettings["CRMMenberContactType"].ToString();

            if (string.IsNullOrEmpty(field))
            {
                field = "_all";
            }
            else
            {
                field = field.ToLower();
            }
            //QueryContainer prefixQuery = new PrefixQuery() { Field = field, Value = keyword };
            QueryContainer matchQuery = new MatchQuery()
            {
                Field = field, Query = keyword, Operator = Operator.And
            };
            var searchResults = Connect.GetSearchClient().Search <MemberContact>(s => s
                                                                                 .Index(indexname)
                                                                                 .Type(typename)
                                                                                 .Query(matchQuery)
                                                                                 .From(start)
                                                                                 .Size(size)
                                                                                 );
            List <MemberContact> eslist = new List <MemberContact>(searchResults.Documents);

            return(eslist);
        }
Esempio n. 15
0
        public string GetAllVehiclesElastic(String vehicles)
        {
            ElasticClient es = new ElasticClient();

            es = EsClient();
            QueryContainer ContQry = new QueryContainer();
            MatchQuery     Qry1    = new MatchQuery();

            Qry1.Field    = "deviceid";
            Qry1.Operator = Operator.And;
            Qry1.Query    = vehicles;
            ContQry       = Qry1;
            SearchRequest esserach = new SearchRequest();

            esserach.Query = ContQry;

            //SearchDescriptor<Driver> esdesct = new SearchDescriptor<Driver>();



            // var esresponse = new SearchResponse<Driver>();
            var       esresponse = es.Search <Device>(esserach);
            DataTable dt         = new DataTable();
            string    lnglat     = "";

            if (esresponse.Documents.Count > 0)
            {
                dt     = ListToDataTable <Device>(esresponse.Documents.ToList());
                lnglat = dt.Rows[dt.Rows.Count - 1]["LngLat"].ToString();
            }


            return(lnglat);
        }
Esempio n. 16
0
        public DataTable GetDeviceRoute(String FromDt, String ToDt)
        {
            ElasticClient es = new ElasticClient();

            es = EsClient();
            QueryContainer ContQry = new QueryContainer();
            MatchQuery     Qry1    = new MatchQuery();

            Qry1.Field    = "deviceid";
            Qry1.Operator = Operator.And;
            Qry1.Query    = "26470";
            ContQry       = Qry1;
            SearchRequest esserach = new SearchRequest();

            esserach.Query = ContQry;

            var       esresponse = es.Search <Device>(esserach);
            DataTable dt         = new DataTable();

            //string lnglat = "";
            if (esresponse.Documents.Count > 0)
            {
                dt = ListToDataTable <Device>(esresponse.Documents.ToList());
                //lnglat = dt.Rows[dt.Rows.Count - 1]["LngLat"].ToString();
            }

            return(dt);
        }
Esempio n. 17
0
        public void test_addSubQuery()
        {
            MatchQuery mq = new MatchQuery();

            mq.addSubQuery("test");
            Assert.AreEqual(1, mq.get_sub_queries().Count);
        }
        public void Test_Search_Certificate_Authentication()
        {
            var config = TestConfiguration.GetConfiguration("basic");

            config.UseSsl = true;

            ClientConfiguration.IgnoreRemoteCertificateNameMismatch = true; //ignore for now
            config.EnableDeadServiceUriPing        = true;                  //temp must fix
            config.EnableCertificateAuthentication = true;
            config.CertificateFactory = CertificateFactory.GetCertificatesByPathAndPassword(
                new PathAndPasswordOptions
            {
                Path     = TestContext.CurrentContext.TestDirectory + "\\client.pfx",
                Password = "******"
            });

            using (var cluster = new Cluster(config))
            {
                cluster.Authenticate(new CertAuthenticator());
                var bucket       = cluster.OpenBucket();
                var query        = new MatchQuery("inn");
                var searchResult = bucket.Query(new SearchQuery
                {
                    Index = "idx_test",
                    Query = query
                }.Limit(10).Timeout(TimeSpan.FromMilliseconds(10000)));
                Assert.True(searchResult.Success);
            }
        }
Esempio n. 19
0
        public List <NewsBase> GetList(string keyword, string field, int start, int size)
        {
            string indexname = ConfigurationManager.AppSettings["IndexName"].ToString();
            string typename  = ConfigurationManager.AppSettings["TypeName"].ToString();

            if (string.IsNullOrEmpty(field))
            {
                field = "_all";
            }
            QueryContainer matchQuery = new MatchQuery()
            {
                Field = field, Query = keyword, Operator = Operator.And
            };
            //QueryContainer querystring = new QueryStringQuery() { Query = keyword, DefaultOperator = Operator.And };
            var searchResults = Connect.GetSearchClient().Search <NewsBase>(s => s
                                                                            .Index(indexname)
                                                                            .Type(typename)
                                                                            .Query(matchQuery)
                                                                                                                                               //.Fields("newsid")
                                                                            .Sort(st => st.OnField(f => f.Newsid).Order(SortOrder.Descending)) /*按ID排序,id为数字,排序正常*/
                                                                            .From(start)
                                                                            .Size(size)
                                                                            //.Highlight(h => h
                                                                            //     .OnFields(f => f
                                                                            //        .OnField("*")
                                                                            //        .PreTags("<b style='color:red'>")
                                                                            //        .PostTags("</b>")))
                                                                            );
            List <NewsBase> eslist = new List <NewsBase>(searchResults.Documents);

            return(eslist);
        }
Esempio n. 20
0
        public void test_SelectBetweenTeams()
        {
            /* Test with test data , kärpät, tps and tappara. Function should
             * returns all rows which contain only teams from parameter list (=6). */
            List <string> teams = new List <string>();

            teams.Add("Kärpät");
            teams.Add("Tappara");
            teams.Add("TPS");

            MatchQuery mq = new MatchQuery();

            mq.addSubQuery(db.SelectBetweenTeams(teams));
            List <Match> rows = db.QueryMatches(mq.getQueryString());

            Assert.AreEqual(6, rows.Count);

            teams.Clear();
            teams.Add("TPS");
            teams.Add("TPS");
            teams.Add("TPS");

            mq.clearSubQueries();
            mq.addSubQuery(db.SelectBetweenTeams(teams));
            rows = db.QueryMatches(mq.getQueryString());
            Assert.AreEqual(0, rows.Count);
        }
        protected QueryBase VisitLike(LikeNode node, ElasticQueryMapperState state)
        {
            // TODO: Move these 3 lines to separate method for reuse?
            var fieldName = GetFormattedFieldName(node);
            var valueNode = node.GetValueNode <string>();
            var value     = ValueFormatter.FormatValueForIndexStorage(valueNode.Value, fieldName);

            // TODO: Match/MatchPhrase?

            /* Like the match query, the match_phrase query first analyzes the query string to produce a list of terms.
             * It then searches for all the terms, but keeps only documents that contain all of the search terms,
             * in the same positions relative to each other.
             */
            var query = new MatchQuery
            {
                Field = fieldName,
                Query = value.ToStringOrEmpty(),
                Boost = node.Boost,

                // TODO: Not sure if this is the best way to handle slop/similarity.
                // Use EditDistance if Slop > 0, otherwise use Ratio if MinimumSimilarity > 0 and not default, otherwise Auto
                Fuzziness = node.Slop > 0
                    ? Fuzziness.EditDistance(node.Slop)
                    : node.MinimumSimilarity > 0 && node.MinimumSimilarity != 0.5f
                        ? Fuzziness.Ratio(node.MinimumSimilarity)
                        : Fuzziness.Auto
            };

            return(query);
        }
Esempio n. 22
0
        public void test_addSubQuery_null_string()
        {
            /*empty string should not add anything to list.*/
            MatchQuery mq = new MatchQuery();

            mq.addSubQuery(null);
            Assert.AreEqual(0, mq.get_sub_queries().Count);
        }
Esempio n. 23
0
        public async Task <IActionResult> GetMatches([FromQuery] MatchQuery matchQuery)
        {
            var matches = await _matchService.GetAsync(matchQuery);

            var returnMatches = _mapper.Map <PaginatedList <MatchListDto> >(matches);

            return(Ok(returnMatches));
        }
Esempio n. 24
0
        public void GetSingle_DoesNotExists()
        {
            // Arrange
            var componentUnderTest = new MatchQuery("four");

            // Act
            componentUnderTest.GetSingle();
        }
Esempio n. 25
0
        public void SerializerMatchQuery()
        {
            JsonSerializer jsonSerializer = new JsonSerializer();
            MatchQuery     matchQuery     = new MatchQuery("fieldname", "fieldvalue");
            string         jsonString     = jsonSerializer.Serialize(matchQuery);

            Console.WriteLine(jsonString);
            Assert.AreEqual(jsonString, "{\"match\":{\"fieldname\":\"fieldvalue\"}}");
        }
Esempio n. 26
0
        public void test_SelectWherePlayoff_false()
        {
            MatchQuery mq = new MatchQuery();

            mq.addSubQuery(db.SelectWherePlayoff(false));
            List <Match> regularSeason = db.QueryMatches(mq.getQueryString());

            Assert.AreEqual(13, regularSeason.Count);
        }
Esempio n. 27
0
        public void test_SelectWherePlayoff_true()
        {
            MatchQuery mq = new MatchQuery();

            mq.addSubQuery(db.SelectWherePlayoff(true));
            List <Match> playoff = db.QueryMatches(mq.getQueryString());

            Assert.AreEqual(5, playoff.Count);
        }
Esempio n. 28
0
        public void test_SelectWhereGD_isAtLeast_false()
        {
            MatchQuery mq = new MatchQuery();

            mq.addSubQuery(db.SelectWhereGD(2, false));
            List <Match> matches = db.QueryMatches(mq.getQueryString());

            Assert.AreEqual(14, matches.Count);
        }
Esempio n. 29
0
        public void test_SelectWhereOvertime_false()
        {
            MatchQuery mq = new MatchQuery();

            mq.addSubQuery(db.SelectWhereOvertime(false));
            List <Match> matches = db.QueryMatches(mq.getQueryString());

            Assert.AreEqual(10, matches.Count);
        }
Esempio n. 30
0
 private static string GetMessage(DiscordIdType type, MatchQuery query)
 {
     return(type switch
     {
         DiscordIdType.User => $"There were multiple users found with the name '{query.Value}'.",
         DiscordIdType.Role => $"There were multiple roles found with the name '{query.Value}'.",
         DiscordIdType.Channel => $"There were multiple channels found with the name '{query.Value}'.",
         _ => throw new ArgumentOutOfRangeException(nameof(type), type, null)
     });
        public ISearchResponse <Book> SearchBookWithAggregation(string criteria = "", string searchField = "", List <string> refinements = null, int count = 10)
        {
            QueryContainer _query;

            if (String.IsNullOrEmpty(criteria))
            {
                _query = new MatchAllQuery();
            }
            else
            {
                if (String.IsNullOrEmpty(searchField))
                {
                    searchField = "_all";

                    _query = new MatchQuery()
                    {
                        Field = searchField,
                        Query = criteria
                    };
                }
                else
                {
                    _query = new TermQuery()
                    {
                        Field = searchField,
                        Value = criteria
                    };
                }
            }

            SearchRequest searchRequest = new SearchRequest
            {
                From  = 0,
                Size  = count,
                Query = _query
            };

            if (refinements != null && refinements.Count > 0)
            {
                var _aggregations = new Dictionary <string, IAggregationContainer>();

                foreach (var field in refinements)
                {
                    _aggregations.Add(field, new AggregationContainer
                    {
                        Terms = new TermsAggregator
                        {
                            Field = field
                        }
                    });
                }

                searchRequest.Aggregations = _aggregations;
            }

            return(esClient.Search <Book>(searchRequest));
        }
        public void MatchQuerySerializationTestsPosition()
        {
            var query = new MatchQuery()
                .Add("name", "Buena Vista")
                .Add("latitude", 34.06)
                .Add("longitude", -118.40);

            //Assert
            AreEqualQueries("values={\"name\":\"Buena Vista\",\"latitude\":\"34.06\",\"longitude\":\"-118.40\"}", query);
        }
Esempio n. 33
0
        public static QueryContainer Equal(string field, string value)
        {
            var query = new MatchQuery
            {
                Field = field,
                Query = value
            };

            return(query);
        }
        public void MatchQuerySerializationTests()
        {
            var query = new MatchQuery()
                .Add("name", "McDonalds")
                .Add("address", "10451 Santa Monica Blvd")
                .Add("region", "CA")
                .Add("postcode", "90025");

            //Assert
            AreEqualQueries("values={\"name\":\"McDonalds\",\"address\":\"10451 Santa Monica Blvd\",\"region\":\"CA\",\"postcode\":\"90025\"}",
                query);
        }
		public ValidateQueryRequestTests()
		{
			QueryContainer query = new MatchQuery
			{
				Field = "field",
				Query = "value"
			};

			var request = new ValidateQueryRequest
			{
				Query = query
			};

			var response = this._client.Validate(request);
			_status = response.ConnectionStatus;
		}
Esempio n. 36
0
 public int GetCount(string keyword, string field)
 {
     string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
     string typename = ConfigurationManager.AppSettings["CRMMemberType"].ToString();
     string ctype = ConfigurationManager.AppSettings["CRMMTrackType"].ToString();
     if (string.IsNullOrEmpty(field))
     { field = "memo"; }
     QueryContainer matchQuery = new MatchQuery() { Field = field.ToLower(), Query = keyword, Operator = Operator.And };
     QueryContainer hasChildQuery = new HasChildQuery() { Type = ctype, Query = matchQuery };
     var results = Connect.GetSearchClient().Count<Member>(c => c
         .Index(indexname)
         .Type(typename)
         .Query(hasChildQuery)
         );
     return (int)results.Count;
 }
Esempio n. 37
0
 public List<MemberContact> GetList(string keyword, string field, int start, int size)
 {
     string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
     string typename = ConfigurationManager.AppSettings["CRMMenberContactType"].ToString();
     if (string.IsNullOrEmpty(field))
     { field = "_all"; }
     else { field = field.ToLower(); }
     //QueryContainer prefixQuery = new PrefixQuery() { Field = field, Value = keyword };
     QueryContainer matchQuery = new MatchQuery() { Field = field, Query = keyword, Operator = Operator.And };
     var searchResults = Connect.GetSearchClient().Search<MemberContact>(s => s
         .Index(indexname)
         .Type(typename)
         .Query(matchQuery)
         .From(start)
         .Size(size)
     );
     List<MemberContact> eslist = new List<MemberContact>(searchResults.Documents);
     return eslist;
 }
Esempio n. 38
0
 public int GetCount(string keyword, string field)
 {
     int count = 0;
     string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
     string typename = ConfigurationManager.AppSettings["CRMMenberContactType"].ToString();
     if (string.IsNullOrEmpty(field))
     { field = "_all"; }
     else { field = field.ToLower(); }
     //QueryContainer prefixQuery = new PrefixQuery() { Field = field, Value = keyword };
     QueryContainer matchQuery = new MatchQuery() { Field = field, Query = keyword, Operator = Operator.And };
     //调用仅取数量方法
     var counts = Connect.GetSearchClient().Count<MemberContact>(s => s
         .Index(indexname)
         .Type(typename)
         .Query(matchQuery)
     );
     count = (int)counts.Count;
     return count;
 }
        internal SearchRequest CreateRequestFromExpression(Expression expression)
        {
            Visit(expression);

            QueryContainer query = new MatchQuery
            {
                Field = ToCamelCase(_fieldName),
                Query = _term
            };

            var searchRequest = new SearchRequest
            {
                From = 0,
                Size = 10,
                Query = query
            };

            return searchRequest;
        }
Esempio n. 40
0
        public int GetCount(string keyword,string type )
        {
            int count = 0;

            string indexname = ConfigurationManager.AppSettings["IndexName"].ToString();
            string typename = ConfigurationManager.AppSettings["TypeName"].ToString();
            if (string.IsNullOrEmpty(type))
            {
                type = "_all";
            }
            QueryContainer matchQuery = new MatchQuery() { Field = type, Query = keyword, Operator = Operator.And };
            QueryContainer querystring = new QueryStringQuery() { Query = keyword, DefaultOperator = Operator.And };
            //调用仅取数量方法
            var counts = Connect.GetSearchClient().Count<NewsBase>(s => s
                .Index(indexname)
                .Type(typename)
                .Query(matchQuery)
            );
            count = (int)counts.Count;
            return count;
        }
        public Task<ISearchResponse<Book>> SearchBookWithAggregation_Aync(string criteria = "", string searchField = "", List<string> refinements = null, int count = 10)
        {
            Task<ISearchResponse<Book>> tSearch = Task.Factory.StartNew(() =>
            {

                QueryContainer _query;

                if (String.IsNullOrEmpty(criteria))
                {
                    _query = new MatchAllQuery();
                }
                else
                {
                    if (String.IsNullOrEmpty(searchField))
                    {
                        searchField = "_all";

                        _query = new MatchQuery()
                        {
                            Field = searchField,
                            Query = criteria
                        };
                    }
                    else
                    {
                        _query = new TermQuery()
                        {
                            Field = searchField,
                            Value = criteria
                        };
                    }

                }

                SearchRequest searchRequest = new SearchRequest
                {
                    From = 0,
                    Size = count,
                    Query = _query
                };

                if (refinements != null && refinements.Count > 0)
                {
                    var _aggregations = new Dictionary<string, IAggregationContainer>();

                    foreach (var field in refinements)
                    {
                        _aggregations.Add(field, new AggregationContainer
                        {
                            Terms = new TermsAggregator
                            {
                                Field = field
                            }
                        });
                    }

                    searchRequest.Aggregations = _aggregations;

                }

                var qResult = esClient.Search<Book>(searchRequest);

                return qResult;
            });

            return tSearch;
        }
        public ISearchResponse<Book> SearchBookWithAggregationFilters(string criteria = "", string searchField = "", 
            List<string> refinements = null,
            Dictionary<string,string> SearchFilters = null,
            int count = 10)
        {
            QueryContainer _query;

            if (String.IsNullOrEmpty(criteria))
            {
                _query = new MatchAllQuery();
            }
            else
            {
                if (String.IsNullOrEmpty(searchField))
                {
                    searchField = "_all";

                    _query = new MatchQuery()
                    {
                        Field = searchField,
                        Query = criteria
                    };
                }
                else
                {
                    _query = new TermQuery()
                    {
                        Field = searchField,
                        Value = criteria
                    };
                }

            }

            SearchRequest searchRequest = new SearchRequest
            {

                From = 0,
                Size = count,
                Query = _query
            };

            if (refinements != null && refinements.Count > 0)
            {
                var _aggregations = new Dictionary<string, IAggregationContainer>();

                foreach (var field in refinements)
                {
                    _aggregations.Add(field, new AggregationContainer
                    {
                        Terms = new TermsAggregator
                        {
                            Field = field
                        }
                    });
                }

                searchRequest.Aggregations = _aggregations;

            }

            if (SearchFilters != null && SearchFilters.Count > 0)
            {
                var searchFilterConfig = new FilterContainer();

                foreach(var sf in SearchFilters)
                {
                    searchFilterConfig = Filter<Book>.Term( sf.Key, sf.Value );
                }

                searchRequest.Filter = searchFilterConfig;
            }

            return esClient.Search<Book>(searchRequest);
        }
        public ISearchResponse<Book> MultiMatchANDSearch(List<AdvancedSearchFilter> SearchCriteria, List<string> refinements = null, Dictionary<string, string> SearchFilters = null, int count = 10)
        {
            QueryContainer _query = null;

            foreach(var rec in SearchCriteria)
            {
                if ((!String.IsNullOrEmpty(rec.SearchField)) && (!String.IsNullOrEmpty(rec.SearchField)))
                {
                    var qry = new MatchQuery()
                    {
                        Field = rec.SearchField,
                        Query = rec.SearchQuery
                    };

                    if (_query == null)
                        _query = qry;
                    else
                        _query = _query && qry;
                }
            }

            SearchRequest searchRequest = new SearchRequest
            {

                From = 0,
                Size = count,
                Query = _query
            };

            if (refinements != null && refinements.Count > 0)
            {
                var _aggregations = new Dictionary<string, IAggregationContainer>();

                foreach (var field in refinements)
                {
                    _aggregations.Add(field, new AggregationContainer
                    {
                        Terms = new TermsAggregator
                        {
                            Field = field
                        }
                    });
                }

                searchRequest.Aggregations = _aggregations;

            }

            if (SearchFilters != null && SearchFilters.Count > 0)
            {
                var searchFilterConfig = new FilterContainer();

                foreach (var sf in SearchFilters)
                {
                    searchFilterConfig = Filter<Book>.Term(sf.Key, sf.Value);
                }

                searchRequest.Filter = searchFilterConfig;
            }

            return esClient.Search<Book>(searchRequest);
        }
Esempio n. 44
0
        public int GetCountByM(SearchCondition sc)
        {
            int count = 0;
            string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
            string typename = ConfigurationManager.AppSettings["CRMMemberType"].ToString();
            string field = "";
            if (string.IsNullOrEmpty(sc.field))
            { field = ""; }
            else { field = sc.field.ToLower(); }
            string classVaule = "";
            if (string.IsNullOrEmpty(sc.classx))
            {
                sc.classx = "";
            }
            else
            {
                sc.classx = sc.classx.ToLower();
                classVaule = "1";
            }

            //must
            List<QueryContainer> mustquerys = new List<QueryContainer>();
            if (field.Equals("lastcontacttime"))
            {
                string timeG = sc.keywords[0];
                string timeL = DateTime.Parse(timeG).AddDays(-7).ToString("yyyy-MM-dd");
                QueryContainer rangeQuyery = new RangeQuery() { Field = field, GreaterThanOrEqualTo = timeL, LowerThanOrEqualTo = timeG, TimeZone = "+08:00" };
                mustquerys.Add(rangeQuyery);
            }
            else if (field.Equals("enterprise"))
            {

                foreach (string keyw in sc.keywords)
                {
                    List<QueryContainer> shouooo = new List<QueryContainer>();
                    QueryContainer termQ = new TermQuery() { Field = "enterprise", Value = sc.keyword.Replace(',', ' ') };
                    QueryContainer lowerQuery = new WildcardQuery() { Field = "enterprise", Value = string.IsNullOrEmpty(keyw) ? "*" : string.Format("*{0}*", keyw.ToLower()) };
                    QueryContainer notlowerQuery = new WildcardQuery() { Field = "enterprise.lower", Value = string.IsNullOrEmpty(keyw) ? "*" : string.Format("*{0}*", keyw.ToLower()) };
                    shouooo.Add(termQ);
                    shouooo.Add(lowerQuery);
                    shouooo.Add(notlowerQuery);
                    QueryContainer boooQuery = new BoolQuery() { Should = shouooo };
                    mustquerys.Add(boooQuery);
                }
            }
            else
            {
                foreach (string keyw in sc.keywords)
                {
                    QueryContainer wildcardQuery = new WildcardQuery() { Field = field, Value = string.IsNullOrEmpty(keyw) ? "*" : string.Format("*{0}*", keyw) };
                    mustquerys.Add(wildcardQuery);
                }
            }

            QueryContainer matchQueryT = new MatchQuery() { Field = "tracktypeid", Query = Convert.ToString(sc.tracktype) };
            QueryContainer matchQueryC = new MatchQuery() { Field = sc.classx, Query = classVaule };
            QueryContainer queryCountry = new WildcardQuery() { Field = "country", Value = string.Format("*{0}*", sc.country) };
            QueryContainer queryProvince = new WildcardQuery() { Field = "province", Value = string.Format("*{0}*", sc.province) };
            QueryContainer queryCity = new WildcardQuery() { Field = "city", Value = string.Format("*{0}*", sc.city) };
            if (!string.IsNullOrEmpty(sc.tracktype))
            {
                mustquerys.Add(matchQueryT);
            }
            if (!string.IsNullOrEmpty(sc.classx))
            {
                mustquerys.Add(matchQueryC);
            }
            if (!string.IsNullOrEmpty(sc.country))
            {
                mustquerys.Add(queryCountry);
            }
            if (!string.IsNullOrEmpty(sc.province))
            {
                mustquerys.Add(queryProvince);
            }
            if (!string.IsNullOrEmpty(sc.city))
            {
                mustquerys.Add(queryCity);
            }
            QueryContainer boolQuery = new BoolQuery() { Must = mustquerys };
            //QueryContainer wildcardQuery = new WildcardQuery() { Field = field, Value = string.IsNullOrEmpty(sc.keyword) ? "*" : string.Format("*{0}*", sc.keyword) };
            var searchResults = Connect.GetSearchClient().Count<Member>(s => s
                .Index(indexname)
                .Type(typename)
                .Query(boolQuery)
            );
            count = (int)searchResults.Count;
            return count;
        }
Esempio n. 45
0
        /// <summary>
        /// WEBAPI使用方法,直接获取Member
        /// </summary>
        /// <param name="sc"></param>
        /// <param name="em"></param>
        /// <returns></returns>
        public string GetMember(SearchCondition sc, out int em)
        {
            string indexname = ConfigurationManager.AppSettings["CRMIndex"].ToString();
            string typename = ConfigurationManager.AppSettings["CRMMemberType"].ToString();
            string field = "";
            if (string.IsNullOrEmpty(sc.field))
            { field = ""; }
            else { field = sc.field.ToLower(); }
            string classVaule = "";
            if (string.IsNullOrEmpty(sc.classx))
            {
                sc.classx = "";
            }
            else
            {
                sc.classx = sc.classx.ToLower();
                classVaule = "1";
            }
            //must
            List<QueryContainer> mustquerys = new List<QueryContainer>();

            if (field.Equals("lastcontacttime"))
            {
                string timeG = sc.keywords[0];
                string timeL = DateTime.Parse(timeG).AddDays(-7).ToString("yyyy-MM-dd");
                QueryContainer rangeQuyery = new RangeQuery() { Field = field, GreaterThanOrEqualTo = timeL, LowerThanOrEqualTo = timeG, TimeZone = "+08:00" };
                mustquerys.Add(rangeQuyery);
            }
            else if (field.Equals("enterprise"))
            {
                foreach (string keyw in sc.keywords)
                {
                    List<QueryContainer> shouooo = new List<QueryContainer>();
                    QueryContainer termQ = new TermQuery() { Field = "enterprise", Value = sc.keyword.Replace(',', ' ') };
                    QueryContainer lowerQuery = new WildcardQuery() { Field = "enterprise", Value = string.IsNullOrEmpty(keyw) ? "*" : string.Format("*{0}*", keyw.ToLower()) };
                    QueryContainer notlowerQuery = new WildcardQuery() { Field = "enterprise.lower", Value = string.IsNullOrEmpty(keyw) ? "*" : string.Format("*{0}*", keyw.ToLower()) };
                    shouooo.Add(termQ);
                    shouooo.Add(lowerQuery);
                    shouooo.Add(notlowerQuery);
                    QueryContainer boooQuery = new BoolQuery() { Should = shouooo };
                    mustquerys.Add(boooQuery);
                }
            }
            else
            {
                foreach (string keyw in sc.keywords)
                {
                    QueryContainer wildcardQuery = new WildcardQuery() { Field = field, Value = string.IsNullOrEmpty(keyw) ? "*" : string.Format("*{0}*", keyw) };
                    mustquerys.Add(wildcardQuery);
                }
            }
            QueryContainer matchQueryT = new MatchQuery() { Field = "tracktypeid", Query = Convert.ToString(sc.tracktype) };
            QueryContainer matchQueryC = new MatchQuery() { Field = sc.classx, Query = classVaule };
            QueryContainer queryCountry = new WildcardQuery() { Field = "country", Value = string.Format("*{0}*", sc.country) };
            QueryContainer queryProvince = new WildcardQuery() { Field = "province", Value = string.Format("*{0}*", sc.province) };
            QueryContainer queryCity = new WildcardQuery() { Field = "city", Value = string.Format("*{0}*", sc.city) };
            if (!string.IsNullOrEmpty(sc.tracktype))
            {
                mustquerys.Add(matchQueryT);
            }
            if (!string.IsNullOrEmpty(sc.classx))
            {
                mustquerys.Add(matchQueryC);
            }
            if (!string.IsNullOrEmpty(sc.country))
            {
                mustquerys.Add(queryCountry);
            }
            if (!string.IsNullOrEmpty(sc.province))
            {
                mustquerys.Add(queryProvince);
            }
            if (!string.IsNullOrEmpty(sc.city))
            {
                mustquerys.Add(queryCity);
            }
            QueryContainer boolQuery = new BoolQuery() { Must = mustquerys };

            var searchResults = Connect.GetSearchClient().Search<Member>(s => s
                 .Index(indexname)
                 .Type(typename)
                 .Fields(f => f.Id, f => f.Enterprise, f => f.Isstar, f => f.Masterlinkman, f => f.Tracktypeid, f => f.Sourceid, f => f.Lastcontacttime, f => f.Enddate, f => f.Adminname, f => f.Addtime)
                 .Query(boolQuery)
                 .Sort(st => st.OnField(f => f.Lastcontacttime).Order(SortOrder.Descending))  /*排序*/
                 .From(sc.start)
                 .Size(sc.size)
             );
            em = searchResults.ElapsedMilliseconds;
            StringBuilder ResultJson = new StringBuilder("");
            ResultJson.Append("[");
            foreach (var hit in searchResults.Hits)
            {
                ResultJson.Append("{");
                ResultJson.Append(
                    String.Join(",",
                        hit.Fields.FieldValuesDictionary
                            .Select(FVD => "'" + FVD.Key + "':'" + FVD.Value.ToString().Replace("[", "").Replace("]", "") + "'")
                            .ToArray()
                    )
                );
                ResultJson.Append("},");
            }
            if (ResultJson.Length > 1)
                ResultJson.Length = ResultJson.Length - 1;
            ResultJson.Append("]");
            return ResultJson.ToString();
        }
 public void AreEqualQueries(string decodedQueryString, MatchQuery query)
 {
     Assert.AreEqual(decodedQueryString, DecodeQueryString(query.ToUrlQuery()));
 }
Esempio n. 47
0
        static void Main(string[] args)
        {
            Console.WriteLine("Welcome to world of elasticSearch!");

            var node = new Uri("http://localhost:9200");

            var settings = new ConnectionSettings(
                node,
                defaultIndex: "uauto");

            var client = new ElasticClient(settings);

            //load data to ES
            //using (Context ctx = new Context())
            //{

            //    foreach (UAutoContractJournalItem item in ctx.UAutoContractJournalItem)
            //    {
            //        client.Index(item);
            //    }

            //}

            #region Use Object Initializer Syntax

            QueryContainer query = new MatchQuery
            {
                Field = "insuredLastName",
                Query = "Тарелкин"
            };

            var searchRequest = new SearchRequest
            {
                From = 0,
                Size = 10,
                Query = query

            };

            var searchResult = client.Search<UAutoContractJournalItem>(searchRequest);

            Console.WriteLine(Encoding.UTF8.GetString(searchResult.RequestInformation.Request));

            Console.WriteLine("{0} was found (OIS)", searchResult.Total);

            #endregion

            #region Lambda version

            searchResult = client.Search<UAutoContractJournalItem>(s => s
                .From(0)
                .Size(10)
                .Query(q => q.Term(p => p.InsuredLastName, "Тарелкин"))
                );

            searchResult = client.Search<UAutoContractJournalItem>(s => s
                .From(0)
                .Size(10)
                .Query(q => q.Match(x => x.OnField(f => f.InsuredLastName).Query("Тарелкин")))
                );

            Console.WriteLine(Encoding.UTF8.GetString(searchResult.RequestInformation.Request));
            Console.WriteLine("{0} was found (Lambda)", searchResult.Total);

            #endregion

            Console.WriteLine("Work complete");
            Console.ReadKey();
        }