Is Elastic Search recommended if attribute getting search is not a huge text document?












0












$begingroup$


We are currently developing a system with MEAN stack with Mongodb at backend. We have employees name, and Ids in our system and our client wants to get pretty good (Read: Google Like) search in our system to search for employees' records. He needs our system to recommend employees even if he has misspelled the name, etc.



One of the suggestions from our development lead was that we should use elastic search but from what I have seen, elastic search is preferred especially in scenarios where we are searching in a large text documents. I am having a feeling that using elastic search in our case will only increase the overhead as the attributes getting search in our case just names, emails or ids, etc.



Currently, our system only uses some basic regrex but I believe, we can improve our search by putting in some effort and without moving towards elastic search (though the development lead feels that we will only be Reinventing the wheel and we should use technologies that do this stuff for us.)



So, I wanted some guidance (Suggestions) on whether to move towards elastic search or should we stick with our current resources to work on a more optimized search than what we have right now?










share|improve this question









$endgroup$




bumped to the homepage by Community 10 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.




















    0












    $begingroup$


    We are currently developing a system with MEAN stack with Mongodb at backend. We have employees name, and Ids in our system and our client wants to get pretty good (Read: Google Like) search in our system to search for employees' records. He needs our system to recommend employees even if he has misspelled the name, etc.



    One of the suggestions from our development lead was that we should use elastic search but from what I have seen, elastic search is preferred especially in scenarios where we are searching in a large text documents. I am having a feeling that using elastic search in our case will only increase the overhead as the attributes getting search in our case just names, emails or ids, etc.



    Currently, our system only uses some basic regrex but I believe, we can improve our search by putting in some effort and without moving towards elastic search (though the development lead feels that we will only be Reinventing the wheel and we should use technologies that do this stuff for us.)



    So, I wanted some guidance (Suggestions) on whether to move towards elastic search or should we stick with our current resources to work on a more optimized search than what we have right now?










    share|improve this question









    $endgroup$




    bumped to the homepage by Community 10 mins ago


    This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.


















      0












      0








      0





      $begingroup$


      We are currently developing a system with MEAN stack with Mongodb at backend. We have employees name, and Ids in our system and our client wants to get pretty good (Read: Google Like) search in our system to search for employees' records. He needs our system to recommend employees even if he has misspelled the name, etc.



      One of the suggestions from our development lead was that we should use elastic search but from what I have seen, elastic search is preferred especially in scenarios where we are searching in a large text documents. I am having a feeling that using elastic search in our case will only increase the overhead as the attributes getting search in our case just names, emails or ids, etc.



      Currently, our system only uses some basic regrex but I believe, we can improve our search by putting in some effort and without moving towards elastic search (though the development lead feels that we will only be Reinventing the wheel and we should use technologies that do this stuff for us.)



      So, I wanted some guidance (Suggestions) on whether to move towards elastic search or should we stick with our current resources to work on a more optimized search than what we have right now?










      share|improve this question









      $endgroup$




      We are currently developing a system with MEAN stack with Mongodb at backend. We have employees name, and Ids in our system and our client wants to get pretty good (Read: Google Like) search in our system to search for employees' records. He needs our system to recommend employees even if he has misspelled the name, etc.



      One of the suggestions from our development lead was that we should use elastic search but from what I have seen, elastic search is preferred especially in scenarios where we are searching in a large text documents. I am having a feeling that using elastic search in our case will only increase the overhead as the attributes getting search in our case just names, emails or ids, etc.



      Currently, our system only uses some basic regrex but I believe, we can improve our search by putting in some effort and without moving towards elastic search (though the development lead feels that we will only be Reinventing the wheel and we should use technologies that do this stuff for us.)



      So, I wanted some guidance (Suggestions) on whether to move towards elastic search or should we stick with our current resources to work on a more optimized search than what we have right now?







      search mongodb search-engine






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Oct 3 '18 at 6:54









      user3422929user3422929

      83




      83





      bumped to the homepage by Community 10 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.







      bumped to the homepage by Community 10 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.
























          1 Answer
          1






          active

          oldest

          votes


















          0












          $begingroup$

          As you mentioned you are searching just names, emails or ids, etc which is not large text.



          So consider a case where you have 6 documents/records having names as below then you can understand better whether how much the large text could matter.




          1. Rohit kumar Bhatnagar

          2. Shilpa Shinde

          3. Manoj kumar

          4. Rohit Bhatnagar Kandaswamy

          5. Rohit kumar shindey Bhatnagar

          6. Rohit Bhatnagar


          If user comes and perform a search for Rohit Bhatnagar, then using the regex you will be showing results in two ways:



          Case I: Where regex is strict match




          1. Rohit Bhatnagar Kandaswamy

          2. Rohit Bhatnagar


          Case II: When regex is relax




          1. Rohit kumar Bhatnagar

          2. Rohit Bhatnagar Kandaswamy

          3. Rohit kumar shindey Bhatnagar

          4. Rohit Bhatnagar


          If we examine case Ist, you are missing two things relaxation(Record 1 & 5 will be missed) and in ranking exact match should come on top that might be more relevant.



          In case 2, we relaxed but still exact match is below in ranking



          So if need a relevant search then yes you can use a search engine. You could also tweak like whether you need the record 5 or not because if you see that might looks irrelevant so you can control like how many words should be in between to consider a document match. If we say consider 1 word in between then record 5 will be eliminated from results.



          Other than search relevance, you can horizontal scale your search if QPS is high. You could also use machine learning techniques(learn to rank), also you could apply synonyms, stemming etc. There are still many other benefits join, streaming, sharding, etc which you could learn from the documentation



          Solr: http://lucene.apache.org/solr/guide/7_6/



          ES: https://www.elastic.co/guide/en/elasticsearch/reference/6.4/index.html



          If above mentioned is required or in near Future then you can use use ElasticSearch or Solr as search engine otherwise you should be good with the current system.






          share|improve this answer









          $endgroup$













            Your Answer





            StackExchange.ifUsing("editor", function () {
            return StackExchange.using("mathjaxEditing", function () {
            StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
            StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
            });
            });
            }, "mathjax-editing");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "557"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f39091%2fis-elastic-search-recommended-if-attribute-getting-search-is-not-a-huge-text-doc%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0












            $begingroup$

            As you mentioned you are searching just names, emails or ids, etc which is not large text.



            So consider a case where you have 6 documents/records having names as below then you can understand better whether how much the large text could matter.




            1. Rohit kumar Bhatnagar

            2. Shilpa Shinde

            3. Manoj kumar

            4. Rohit Bhatnagar Kandaswamy

            5. Rohit kumar shindey Bhatnagar

            6. Rohit Bhatnagar


            If user comes and perform a search for Rohit Bhatnagar, then using the regex you will be showing results in two ways:



            Case I: Where regex is strict match




            1. Rohit Bhatnagar Kandaswamy

            2. Rohit Bhatnagar


            Case II: When regex is relax




            1. Rohit kumar Bhatnagar

            2. Rohit Bhatnagar Kandaswamy

            3. Rohit kumar shindey Bhatnagar

            4. Rohit Bhatnagar


            If we examine case Ist, you are missing two things relaxation(Record 1 & 5 will be missed) and in ranking exact match should come on top that might be more relevant.



            In case 2, we relaxed but still exact match is below in ranking



            So if need a relevant search then yes you can use a search engine. You could also tweak like whether you need the record 5 or not because if you see that might looks irrelevant so you can control like how many words should be in between to consider a document match. If we say consider 1 word in between then record 5 will be eliminated from results.



            Other than search relevance, you can horizontal scale your search if QPS is high. You could also use machine learning techniques(learn to rank), also you could apply synonyms, stemming etc. There are still many other benefits join, streaming, sharding, etc which you could learn from the documentation



            Solr: http://lucene.apache.org/solr/guide/7_6/



            ES: https://www.elastic.co/guide/en/elasticsearch/reference/6.4/index.html



            If above mentioned is required or in near Future then you can use use ElasticSearch or Solr as search engine otherwise you should be good with the current system.






            share|improve this answer









            $endgroup$


















              0












              $begingroup$

              As you mentioned you are searching just names, emails or ids, etc which is not large text.



              So consider a case where you have 6 documents/records having names as below then you can understand better whether how much the large text could matter.




              1. Rohit kumar Bhatnagar

              2. Shilpa Shinde

              3. Manoj kumar

              4. Rohit Bhatnagar Kandaswamy

              5. Rohit kumar shindey Bhatnagar

              6. Rohit Bhatnagar


              If user comes and perform a search for Rohit Bhatnagar, then using the regex you will be showing results in two ways:



              Case I: Where regex is strict match




              1. Rohit Bhatnagar Kandaswamy

              2. Rohit Bhatnagar


              Case II: When regex is relax




              1. Rohit kumar Bhatnagar

              2. Rohit Bhatnagar Kandaswamy

              3. Rohit kumar shindey Bhatnagar

              4. Rohit Bhatnagar


              If we examine case Ist, you are missing two things relaxation(Record 1 & 5 will be missed) and in ranking exact match should come on top that might be more relevant.



              In case 2, we relaxed but still exact match is below in ranking



              So if need a relevant search then yes you can use a search engine. You could also tweak like whether you need the record 5 or not because if you see that might looks irrelevant so you can control like how many words should be in between to consider a document match. If we say consider 1 word in between then record 5 will be eliminated from results.



              Other than search relevance, you can horizontal scale your search if QPS is high. You could also use machine learning techniques(learn to rank), also you could apply synonyms, stemming etc. There are still many other benefits join, streaming, sharding, etc which you could learn from the documentation



              Solr: http://lucene.apache.org/solr/guide/7_6/



              ES: https://www.elastic.co/guide/en/elasticsearch/reference/6.4/index.html



              If above mentioned is required or in near Future then you can use use ElasticSearch or Solr as search engine otherwise you should be good with the current system.






              share|improve this answer









              $endgroup$
















                0












                0








                0





                $begingroup$

                As you mentioned you are searching just names, emails or ids, etc which is not large text.



                So consider a case where you have 6 documents/records having names as below then you can understand better whether how much the large text could matter.




                1. Rohit kumar Bhatnagar

                2. Shilpa Shinde

                3. Manoj kumar

                4. Rohit Bhatnagar Kandaswamy

                5. Rohit kumar shindey Bhatnagar

                6. Rohit Bhatnagar


                If user comes and perform a search for Rohit Bhatnagar, then using the regex you will be showing results in two ways:



                Case I: Where regex is strict match




                1. Rohit Bhatnagar Kandaswamy

                2. Rohit Bhatnagar


                Case II: When regex is relax




                1. Rohit kumar Bhatnagar

                2. Rohit Bhatnagar Kandaswamy

                3. Rohit kumar shindey Bhatnagar

                4. Rohit Bhatnagar


                If we examine case Ist, you are missing two things relaxation(Record 1 & 5 will be missed) and in ranking exact match should come on top that might be more relevant.



                In case 2, we relaxed but still exact match is below in ranking



                So if need a relevant search then yes you can use a search engine. You could also tweak like whether you need the record 5 or not because if you see that might looks irrelevant so you can control like how many words should be in between to consider a document match. If we say consider 1 word in between then record 5 will be eliminated from results.



                Other than search relevance, you can horizontal scale your search if QPS is high. You could also use machine learning techniques(learn to rank), also you could apply synonyms, stemming etc. There are still many other benefits join, streaming, sharding, etc which you could learn from the documentation



                Solr: http://lucene.apache.org/solr/guide/7_6/



                ES: https://www.elastic.co/guide/en/elasticsearch/reference/6.4/index.html



                If above mentioned is required or in near Future then you can use use ElasticSearch or Solr as search engine otherwise you should be good with the current system.






                share|improve this answer









                $endgroup$



                As you mentioned you are searching just names, emails or ids, etc which is not large text.



                So consider a case where you have 6 documents/records having names as below then you can understand better whether how much the large text could matter.




                1. Rohit kumar Bhatnagar

                2. Shilpa Shinde

                3. Manoj kumar

                4. Rohit Bhatnagar Kandaswamy

                5. Rohit kumar shindey Bhatnagar

                6. Rohit Bhatnagar


                If user comes and perform a search for Rohit Bhatnagar, then using the regex you will be showing results in two ways:



                Case I: Where regex is strict match




                1. Rohit Bhatnagar Kandaswamy

                2. Rohit Bhatnagar


                Case II: When regex is relax




                1. Rohit kumar Bhatnagar

                2. Rohit Bhatnagar Kandaswamy

                3. Rohit kumar shindey Bhatnagar

                4. Rohit Bhatnagar


                If we examine case Ist, you are missing two things relaxation(Record 1 & 5 will be missed) and in ranking exact match should come on top that might be more relevant.



                In case 2, we relaxed but still exact match is below in ranking



                So if need a relevant search then yes you can use a search engine. You could also tweak like whether you need the record 5 or not because if you see that might looks irrelevant so you can control like how many words should be in between to consider a document match. If we say consider 1 word in between then record 5 will be eliminated from results.



                Other than search relevance, you can horizontal scale your search if QPS is high. You could also use machine learning techniques(learn to rank), also you could apply synonyms, stemming etc. There are still many other benefits join, streaming, sharding, etc which you could learn from the documentation



                Solr: http://lucene.apache.org/solr/guide/7_6/



                ES: https://www.elastic.co/guide/en/elasticsearch/reference/6.4/index.html



                If above mentioned is required or in near Future then you can use use ElasticSearch or Solr as search engine otherwise you should be good with the current system.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Dec 30 '18 at 4:32









                Aman TandonAman Tandon

                1011




                1011






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Data Science Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    Use MathJax to format equations. MathJax reference.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdatascience.stackexchange.com%2fquestions%2f39091%2fis-elastic-search-recommended-if-attribute-getting-search-is-not-a-huge-text-doc%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Erzsébet Schaár

                    Ponta tanko

                    Tantalo (mitologio)