Terms aggregation across two fields in ElasticsearchSolr vs. ElasticSearchElasticsearch Terms or Cardinality Aggregation - Order by number of distinct valuesHow to get an Elasticsearch aggregation with multiple fieldsElasticSearch - is aggregation only perform on term?Elasticsearch aggregate by multiple fields separatelyAggregate over last documents in elasticsearchElasticsearch nested significant terms aggregation with background filterElasticsearch - Filter by aggregation valueExclude empty unselected aggregations from elasticsearchCount occurrences in field of terms intersecting another aggregation

How do we properly manage transitions within a descriptive section?

why "American-born", not "America-born"?

Do seaplanes need to get clearance for takeoff?

How to counter "I don't like your tone" in a work conversation?

Are there historical examples of audiences drawn to a work that was "so bad it's good"?

Germany rejected my entry to Schengen countries

Are CTRL+C and <esc> the same?

Is being an extrovert a necessary condition to be a manager?

How to prove the emptiness of intersection of two context free languages is undecidable?

Simple Arithmetic Puzzle 7. Or is it?

Gambler's Fallacy Dice

Does the Aboleth have expertise in History and Perception?

Bash - Execute two commands and get exit status 1 if first fails

Does George B Sperry logo on fold case for photos indicate photographer or case manufacturer?

Filter a file list against an integer array?

Why was Houston selected as the location for the Manned Spacecraft Center?

Why "strap-on" boosters, and how do other people say it?

Do 'destroy' effects count as damage?

Hotel booking: Why is Agoda much cheaper than booking.com?

Why was Harry at the Weasleys' at the beginning of Goblet of Fire but at the Dursleys' after?

Is my company merging branches wrong?

Is there a realtime, uncut video of Saturn V ignition through tower clear?

Warped chessboard

Farthing / Riding



Terms aggregation across two fields in Elasticsearch


Solr vs. ElasticSearchElasticsearch Terms or Cardinality Aggregation - Order by number of distinct valuesHow to get an Elasticsearch aggregation with multiple fieldsElasticSearch - is aggregation only perform on term?Elasticsearch aggregate by multiple fields separatelyAggregate over last documents in elasticsearchElasticsearch nested significant terms aggregation with background filterElasticsearch - Filter by aggregation valueExclude empty unselected aggregations from elasticsearchCount occurrences in field of terms intersecting another aggregation






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















I'm not sure what I want to do is possible. I have data that looks like this:




"Actor1Name": "PERSON",
"Actor2Name": "OTHERPERSON"



I use copy_to in order to populate a secondary field, ActorNames, with both values.



I am trying to build a typeahead capability where a user can start to type a name and it will populate with the top hits for that prefix. I want it to search across both actor fields. The only problem is when I search across ActorNames, I get both values even if only one matches. That means if I'm searching for prefix O that I will get both OTHERPERSON (desired) and PERSON (undesired) in my results based on the above document.



My current solution is to run 2 aggregations and combine them client side, but is it possible to do this purely in ES?



Current query:




"query":
"prefix":
"ActorNames": "O"

,
"aggs":
"actor1":
"filter":
"prefix":
"Actor1Name": "O"

,
"aggs":
"actor1":
"terms":
"field": "Actor1Name",



,
"actor2":
"filter":
"prefix":
"Actor2Name": "O"

,
"aggs":
"actor2":
"terms":
"field": "Actor2Name",















share|improve this question




























    0















    I'm not sure what I want to do is possible. I have data that looks like this:




    "Actor1Name": "PERSON",
    "Actor2Name": "OTHERPERSON"



    I use copy_to in order to populate a secondary field, ActorNames, with both values.



    I am trying to build a typeahead capability where a user can start to type a name and it will populate with the top hits for that prefix. I want it to search across both actor fields. The only problem is when I search across ActorNames, I get both values even if only one matches. That means if I'm searching for prefix O that I will get both OTHERPERSON (desired) and PERSON (undesired) in my results based on the above document.



    My current solution is to run 2 aggregations and combine them client side, but is it possible to do this purely in ES?



    Current query:




    "query":
    "prefix":
    "ActorNames": "O"

    ,
    "aggs":
    "actor1":
    "filter":
    "prefix":
    "Actor1Name": "O"

    ,
    "aggs":
    "actor1":
    "terms":
    "field": "Actor1Name",



    ,
    "actor2":
    "filter":
    "prefix":
    "Actor2Name": "O"

    ,
    "aggs":
    "actor2":
    "terms":
    "field": "Actor2Name",















    share|improve this question
























      0












      0








      0








      I'm not sure what I want to do is possible. I have data that looks like this:




      "Actor1Name": "PERSON",
      "Actor2Name": "OTHERPERSON"



      I use copy_to in order to populate a secondary field, ActorNames, with both values.



      I am trying to build a typeahead capability where a user can start to type a name and it will populate with the top hits for that prefix. I want it to search across both actor fields. The only problem is when I search across ActorNames, I get both values even if only one matches. That means if I'm searching for prefix O that I will get both OTHERPERSON (desired) and PERSON (undesired) in my results based on the above document.



      My current solution is to run 2 aggregations and combine them client side, but is it possible to do this purely in ES?



      Current query:




      "query":
      "prefix":
      "ActorNames": "O"

      ,
      "aggs":
      "actor1":
      "filter":
      "prefix":
      "Actor1Name": "O"

      ,
      "aggs":
      "actor1":
      "terms":
      "field": "Actor1Name",



      ,
      "actor2":
      "filter":
      "prefix":
      "Actor2Name": "O"

      ,
      "aggs":
      "actor2":
      "terms":
      "field": "Actor2Name",















      share|improve this question














      I'm not sure what I want to do is possible. I have data that looks like this:




      "Actor1Name": "PERSON",
      "Actor2Name": "OTHERPERSON"



      I use copy_to in order to populate a secondary field, ActorNames, with both values.



      I am trying to build a typeahead capability where a user can start to type a name and it will populate with the top hits for that prefix. I want it to search across both actor fields. The only problem is when I search across ActorNames, I get both values even if only one matches. That means if I'm searching for prefix O that I will get both OTHERPERSON (desired) and PERSON (undesired) in my results based on the above document.



      My current solution is to run 2 aggregations and combine them client side, but is it possible to do this purely in ES?



      Current query:




      "query":
      "prefix":
      "ActorNames": "O"

      ,
      "aggs":
      "actor1":
      "filter":
      "prefix":
      "Actor1Name": "O"

      ,
      "aggs":
      "actor1":
      "terms":
      "field": "Actor1Name",



      ,
      "actor2":
      "filter":
      "prefix":
      "Actor2Name": "O"

      ,
      "aggs":
      "actor2":
      "terms":
      "field": "Actor2Name",












      elasticsearch elasticsearch-6






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 23 at 19:27









      DerekDerek

      805625




      805625






















          1 Answer
          1






          active

          oldest

          votes


















          0














          If you want to check the prefix condition on both the fields, why not use ANDING of prefix on both fields? Like:



          GET /my_index/_search

          "query":
          "bool":
          "must": [

          "prefix":
          "Actor1Name": "O"

          ,

          "prefix":
          "Actor2Name": "O"


          ]








          share|improve this answer























          • Because I want to match documents that have either actor starting with an O but I only want to include in the aggregation those actors that start with an O.

            – Derek
            Mar 24 at 3:32











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          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: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          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%2fstackoverflow.com%2fquestions%2f55317546%2fterms-aggregation-across-two-fields-in-elasticsearch%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














          If you want to check the prefix condition on both the fields, why not use ANDING of prefix on both fields? Like:



          GET /my_index/_search

          "query":
          "bool":
          "must": [

          "prefix":
          "Actor1Name": "O"

          ,

          "prefix":
          "Actor2Name": "O"


          ]








          share|improve this answer























          • Because I want to match documents that have either actor starting with an O but I only want to include in the aggregation those actors that start with an O.

            – Derek
            Mar 24 at 3:32















          0














          If you want to check the prefix condition on both the fields, why not use ANDING of prefix on both fields? Like:



          GET /my_index/_search

          "query":
          "bool":
          "must": [

          "prefix":
          "Actor1Name": "O"

          ,

          "prefix":
          "Actor2Name": "O"


          ]








          share|improve this answer























          • Because I want to match documents that have either actor starting with an O but I only want to include in the aggregation those actors that start with an O.

            – Derek
            Mar 24 at 3:32













          0












          0








          0







          If you want to check the prefix condition on both the fields, why not use ANDING of prefix on both fields? Like:



          GET /my_index/_search

          "query":
          "bool":
          "must": [

          "prefix":
          "Actor1Name": "O"

          ,

          "prefix":
          "Actor2Name": "O"


          ]








          share|improve this answer













          If you want to check the prefix condition on both the fields, why not use ANDING of prefix on both fields? Like:



          GET /my_index/_search

          "query":
          "bool":
          "must": [

          "prefix":
          "Actor1Name": "O"

          ,

          "prefix":
          "Actor2Name": "O"


          ]









          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 23 at 21:32









          Yashasvi Raj PantYashasvi Raj Pant

          3101316




          3101316












          • Because I want to match documents that have either actor starting with an O but I only want to include in the aggregation those actors that start with an O.

            – Derek
            Mar 24 at 3:32

















          • Because I want to match documents that have either actor starting with an O but I only want to include in the aggregation those actors that start with an O.

            – Derek
            Mar 24 at 3:32
















          Because I want to match documents that have either actor starting with an O but I only want to include in the aggregation those actors that start with an O.

          – Derek
          Mar 24 at 3:32





          Because I want to match documents that have either actor starting with an O but I only want to include in the aggregation those actors that start with an O.

          – Derek
          Mar 24 at 3:32



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • 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.

          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%2fstackoverflow.com%2fquestions%2f55317546%2fterms-aggregation-across-two-fields-in-elasticsearch%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

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript