映射社会关系弹性搜索

时间:2016-07-09 11:44:07

标签: elasticsearch

我们有一个社交应用程序,用户可以在某些特定类别下创建组。用户将拥有用户教育,认证,位置等。 我想基于位置,教育等搜索用户。类似地搜索基于类别的组。我想使用Elasticsearch

这是用户映射

"userData" : {
        "dynamic" : "true",
        "properties" : {
          "allSuggest" : {
            "type" : "completion",
            "analyzer" : "simple",
            "payloads" : true,
            "preserve_separators" : true,
            "preserve_position_increments" : true,
            "max_input_length" : 50
          },
          "email" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "firstName" : {
            "type" : "string"
          },
          "gender" : {
            "type" : "object",
            "enabled" : false
          },
          "id" : {
            "type" : "string"
          },
          "isActive" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "lastName" : {
            "type" : "string"
          },
          "location" : {
            "properties" : {
              "country" : {
                "type" : "string",
                "index" : "not_analyzed"
              },
              "region" : {
                "type" : "string"
              }
            }
          },
          "mId" : {
            "type" : "object",
            "enabled" : false
          },
          "profilePic" : {
            "type" : "object",
            "enabled" : false
          },
          "profileStatus" : {
            "type" : "object",
            "enabled" : false
          },
          "status" : {
            "type" : "object",
            "enabled" : false
          },
          "userId" : {
            "type" : "object",
            "enabled" : false
          },
          "userSuggest" : {
            "type" : "completion",
            "analyzer" : "simple",
            "payloads" : true,
            "preserve_separators" : true,
            "preserve_position_increments" : true,
            "max_input_length" : 50
          }
        }
      }

组模型

"groupData" : {
        "dynamic" : "true",
        "properties" : {
          "allSuggest" : {
            "type" : "completion",
            "analyzer" : "simple",
            "payloads" : true,
            "preserve_separators" : true,
            "preserve_position_increments" : true,
            "max_input_length" : 50
          },
          "cDate" : {
            "type" : "object",
            "enabled" : false
          },
          "categoryId" : {
            "type" : "integer"
          },
          "groupId" : {
            "type" : "object",
            "enabled" : false
          },
          "groupName" : {
            "type" : "string"
          },
          "groupPic" : {
            "type" : "object",
            "enabled" : false
          },
          "groupStatus" : {
            "type" : "object",
            "enabled" : false
          },
          "groupSuggest" : {
            "type" : "completion",
            "analyzer" : "simple",
            "payloads" : true,
            "preserve_separators" : true,
            "preserve_position_increments" : true,
            "max_input_length" : 50
          },
          "isActive" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "mId" : {
            "type" : "object",
            "enabled" : false
          }
        }
      }

问题是我怎么说用户是该组的成员。搜索特定组中的成员

我应该将userData本身作为嵌套或父子项添加教育详细信息。

或者在Elasticsearch中处理社交关系很困难?

1 个答案:

答案 0 :(得分:0)

问题是我怎么说用户是该群组的成员

为此,您可以在用户映射中使用一组group id,然后使用术语过滤器来过滤组ID。

搜索特定群组中的成员

这可以使用上述方法本身完成。

我应该将userData本身作为嵌套或父子项添加教育详细信息。

教育详细信息应该是用户映射本身的一部分。这可以使用嵌套数组进行。使用父子关系将是一种矫枉过正的行为。