【问题标题】:Search for records in elastic search with set of values for each field.使用每个字段的一组值在弹性搜索中搜索记录。
【发布时间】:2015-10-15 10:01:51
【问题描述】:

我在弹性搜索中有一组记录 我想将 1 个特定记录(我在一个变量中有它)与索引中存在的其余记录进行比较。

我想将每个字段的值分别与我拥有的记录中的值进行比较。

例如。 如果我有

{
  "person" : [
    {
      "name" : "asd",
      "awdawD" : "asdawd"
    },
    {
      "name" : "adw ed",
      "awdawD" : "asdawd"
    },
    {
      "name" : "a wra",
      "awdawD" : "asdawd"
    },
    {
      "name" : "ca eyy",
      "awdawD" : "asdawd"
    }
  ]
}

我的记录是

[
  {
    "name" : "asd",
    "awdawD" : "asdawd"
  },
  {
    "name" : "s tr",
    "awdawD" : " tjy"
  }
]

我想比较 name 和 name,awdawD 和 awdawD 并得到结果。

由于我有一个 Persons 数组,我是否必须为我拥有的记录中的每个元素创建一个循环,以便将其与弹性搜索中的记录进行比较?

如何在没有循环的情况下在弹性搜索中做到这一点?

分别比较每个名称和 awdawD。

【问题讨论】:

    标签: elasticsearch elastica


    【解决方案1】:

    我知道这可能不是您正在寻找的优雅解决方案(我认为不存在),但您总是可以这样做:

    POST /test_index/_search
    {
       "query": {
          "filtered": {
             "filter": {
                "or": {
                   "filters": [
                      {
                         "and": {
                            "filters": [
                               {
                                  "term": {
                                     "name": "asd"
                                  }
                               },
                               {
                                  "term": {
                                     "awdawD": "asdawd"
                                  }
                               }
                            ]
                         }
                      },
                      {
                         "and": {
                            "filters": [
                               {
                                  "term": {
                                     "name": "s tr"
                                  }
                               },
                               {
                                  "term": {
                                     "awdawD": " tjy"
                                  }
                               }
                            ]
                         }
                      }
                   ]
                }
             }
          }
       }
    }
    

    或者这个

    POST /test_index/_search
    {
       "query": {
          "bool": {
             "should": [
                {
                   "bool": {
                      "must": [
                         {
                            "match": {
                               "name": "asd"
                            }
                         },
                         {
                            "match": {
                               "awdawD": "asdawd"
                            }
                         }
                      ]
                   }
                },
                {
                   "bool": {
                      "must": [
                         {
                            "match": {
                               "name": "s tr"
                            }
                         },
                         {
                            "match": {
                               "awdawD": " tjy"
                            }
                         }
                      ]
                   }
                }
             ]
          }
       }
    }
    

    这两个查询都只返回您的第一个文档(根据您的分析设置,一个或另一个可能更可取)。

    这是我用来测试它的一些代码:

    http://sense.qbox.io/gist/52de7f75e685486a63d18bd387cbb02d03cc6feb

    【讨论】:

    • 我做了一系列类似这样的查询。但我正在寻找一些东西,比如在一个查询中分组
    猜你喜欢
    • 2016-02-26
    • 2017-09-13
    • 2016-11-05
    • 2020-06-04
    • 1970-01-01
    • 2017-05-12
    • 2020-09-11
    • 2016-10-04
    • 2017-07-01
    相关资源
    最近更新 更多