예제 #1
0
        public static List<AgregationsPorBucketQtde> ConsultaElasticSearchQtde(string paramatro, string type_document, string campo, int qtde_registros, string index, string url)
        {
            var node = new Uri(URI_ES);
            var settings = new ConnectionSettings(node);
            var client = new ElasticClient(settings);
            //var filterQuery = Query<PRODUTOS_SENSIVEIS_POCO>.Terms("descricao_detalhada_produto", paramatro.ToLower().Replace(" ", " AND "));
            var result = client.Search<AgregationsPorBucketQtde>(s => s
                .Index(index)
                .Type(type_document)
                .SearchType(Elasticsearch.Net.SearchType.Count)
                //.Query(filterQuery)
                .Query(q => q.QueryString(d => d.DefaultField("descricao_detalhada_produto").Query(paramatro.ToLower().Replace(" ", " AND "))))
                .Aggregations(a => a
                    .Terms("name", st => st
                        .Field(campo)
                        .Size(qtde_registros)
                        .Aggregations(aa => aa
                            .ValueCount("qtde", m => m
                                .Field(campo)
                            )
                            .Cardinality("desc", m => m
                                .Field("descricao")
                            )
                        )
                    )
                     .Terms("desc", st => st
                        .Field("DESCRICAO")
                        .Size(qtde_registros)
                    )
                )
            );

            var listBuckets = (Bucket)result.Aggregations["name"];

            Bucket listBucketsDesc = null;

            if (campo.Equals("ncm"))
                listBucketsDesc = (Bucket)result.Aggregations["desc"];

            List<AgregationsPorBucketQtde> listResultados = new List<AgregationsPorBucketQtde>();

            int count = 0;
            foreach (KeyItem listKeyItem in listBuckets.Items)
            {
                AgregationsPorBucketQtde resumoBusca = new AgregationsPorBucketQtde();
                resumoBusca.name = listKeyItem.Key;
                resumoBusca.qtde = (long)((ValueMetric)listKeyItem.Aggregations["qtde"]).Value;
                resumoBusca.url = url;
                if (campo.Equals("ncm"))
                {
                    //This call will Load NCM´s list only once
                    //NcmDAO.loadStaticNCM();
                    //resumoBusca.desc = StaticNCM.getNCMDesc(resumoBusca.name);

                    int countDesc = 0;
                    foreach (KeyItem listKeyItemDesc in listBucketsDesc.Items)
                    {
                        if (count == countDesc)
                        {
                            resumoBusca.desc = listKeyItemDesc.Key;
                            break;
                        }
                        countDesc++;
                    }
                }
                listResultados.Add(resumoBusca);
                count++;
            }
            return listResultados;
        }
예제 #2
0
        public static List<AgregationsPorBucketQtde> ConsultaElasticSearchCountDocumentos(string paramatro, string index)
        {
            var node = new Uri(URI_ES);
            var settings = new ConnectionSettings(node);
            var client = new ElasticClient(settings);
            var resultDI = client.Count<DIPOCO>(c => c
                .Index(index)
                .Type(DI)
                .Query(q => q
                    .Match(m => m
                        .OnField("tx_descricaoMercadoria")
                        .Query(paramatro.ToLower())
                    )
                )
            );

            List<AgregationsPorBucketQtde> listResultados = new List<AgregationsPorBucketQtde>();

            AgregationsPorBucketQtde resumoBusca = new AgregationsPorBucketQtde();
            resumoBusca.name = DI;
            resumoBusca.qtde = resultDI.Count;
            listResultados.Add(resumoBusca);

            //Consultando CE
            var resultCE = client.Count<CE_POCO>(c => c
                                            .Index(index)
                                            .Type(CE)
                                            .Query(q => q
                                                .Match(m => m
                                                    .OnField("txmercadoria")
                                                    .Query(paramatro.ToLower())
                                                )
                                            )
                                        );

            resumoBusca = new AgregationsPorBucketQtde();
            resumoBusca.name = CE;
            resumoBusca.qtde = resultCE.Count;
            listResultados.Add(resumoBusca);

            return listResultados;
        }
예제 #3
0
        public static List<AgregationsPorBucketQtde> ConsultaElasticSearchDocCompany(string parametro)
        {
            var node = new Uri(URI_ES);
            var settings = new ConnectionSettings(node);
            var client = new ElasticClient(settings);
            var filterQuery = Query<ES_DOCUMENTS_POCO>.MultiMatch(mm => mm
                                                                        .Query(parametro.ToLower())
                                                                        .OnFields(
                                                                            f => f.tx_descricaoMercadoria,
                                                                            f => f.txmercadoria)
                                                                                );
            var result = client.Search<AgregationsPorBucketQtde>(s => s
                                                                 .Index(INDEX)
                                                                .SearchType(Elasticsearch.Net.SearchType.Count)
                                                                .AllTypes()
                                                                .Query(filterQuery)
                                                                .Size(50)
                                                                 .Aggregations(a => a
                                                                                .Terms(DI, terDI => terDI
                                                                                        .Field("tx_cnpj")
                                                                                )
                                                                                .Terms(CE, terCE => terCE
                                                                                        .Field("cdconsignatario")
                                                                                )
                                                                              )
                                                                 );

            List<AgregationsPorBucketQtde> listResultados = new List<AgregationsPorBucketQtde>();

            //DI Values
            var listBucketsDI = (Bucket)result.Aggregations[DI];

            foreach (KeyItem listKeyItem in listBucketsDI.Items)
            {
                AgregationsPorBucketQtde resumoBusca = new AgregationsPorBucketQtde();
                //incluir aqui a busca pelo nome da empresa
                //resumoBusca.name = DIDAO.ConsultaEmpresaDIPorCnpj(listKeyItem.Key) + "/" + listKeyItem.Key;
                resumoBusca.qtde = listKeyItem.DocCount;

                listResultados.Add(resumoBusca);
            }
            //CE Values
            var listBucketsCE = (Bucket)result.Aggregations[CE];

            foreach (KeyItem listKeyItem in listBucketsCE.Items)
            {
                AgregationsPorBucketQtde resumoBusca = new AgregationsPorBucketQtde();
                //resumoBusca.name = CEDAO.ConsultaEmpresaCEPorCnpj(listKeyItem.Key) + "/" + listKeyItem.Key;
                resumoBusca.qtde = listKeyItem.DocCount;

                listResultados.Add(resumoBusca);
            }
            return listResultados;
        }