首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用弹性搜索设计搜索服务

使用弹性搜索设计搜索服务
EN

Stack Overflow用户
提问于 2018-03-03 08:51:00
回答 1查看 80关注 0票数 0

我有一个要求。我正在为一个社交网络建立一个搜索服务。搜索服务应该返回某人搜索的用户的名称。现在,它将仅限于用户域搜索。我计划使用弹性搜索来保留索引(用户域详细信息)。然后,我将从我的搜索服务(搜索服务在nodejs上)调用EL。我想不出如何为EL创建索引的设计。我应该使用批处理来创建索引,还是在创建用户时创建索引。

一个好的指针或一个好的设计将受到赞赏。

EN

回答 1

Stack Overflow用户

发布于 2018-03-03 15:29:26

您应该在创建新用户时创建索引

简单的例子可能会很有用

您的用户数据如:`

代码语言:javascript
复制
[
 {
    "_id": "1",
    "status": true,
    "username": "mak",
    "userdomain": "mydomain.com",
    "name": "mak doe"
 },
 {
    "_id": "2",
    "status": true,
    "username": "janny",
    "userdomain": "mydomain.com",
    "name": "janny"
 },
 {
    "_id": "3",
    "status": true,
    "username": "mac",
    "userdomain": "newdomain.com",
    "name": "mac peter"
 },
 {
    "_id": "4",
    "status": true,
    "username": "mak",
    "userdomain": "mydomain.com",
    "name": "mak peter"
 },
 {
       "id": "5",            
       "status": true,
       "username": "mak",
       "userdomain": "newdomain.com",
       "name": "mak peter"
 },
]

`

弹性模式如下:`

代码语言:javascript
复制
PUT socialdata
{
    "mappings": {
          "users": {
         "properties": {
            "status": {
               "type": "boolean"
            },
            "name": {
               "type": "text"
            },
            "username": {
               "type": "string",
               "fields": {
                  "raw": {
                     "type": "string",
                     "analyzer": "keyword_lowercase_analyzer"
                  },
                  "english": {
                     "type": "text",
                     "analyzer": "english"
                  }
               }
            },
            "userdomain": {
               "type": "string",
               "fields": {
                  "raw": {
                     "type": "string",
                     "analyzer": "keyword_lowercase_analyzer"
                  },
                  "english": {
                     "type": "text",
                     "analyzer": "english"
                  }
               }
            }
        }
       }
    }
}

`

批量上传:`

代码语言:javascript
复制
POST socialdata/users/_bulk
{ "index": { "_index": "socialdata","_type": "users", "_id": 1 }}
{"status":true,"username": "mak","userdomain": "mydomain.com","name": "mak doe"}
{ "index": { "_index": "socialdata","_type": "users", "_id": 2 }}
{"status":true,"username": "janny","userdomain": "mydomain.com","name": "janny"}
{ "index": { "_index": "socialdata","_type": "users", "_id": 3 }}
{"status":true,"username": "mac","userdomain": "newdomain.com","name": "mac peter"}
{ "index": { "_index": "socialdata","_type": "users", "_id": 4 }}
{"status":true,"username": "mak","userdomain": "mydomain.com","name": "mak peter"}
{ "index": { "_index": "socialdata","_type": "users", "_id": 5 }}
{"status":true,"username": "mak","userdomain": "newdomain.com","name": "mak peter"}

`

单索引:`

代码语言:javascript
复制
POST socialdata/users/_bulk
{ "index": { "_index": "socialdata","_type": "users", "_id": 1 }}
{"status":true,"username": "mak","userdomain": "mydomain.com","name": "mak doe"}

`

弹性查询:只返回两条记录`

代码语言:javascript
复制
POST socialdata/users/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "username": "mak"
          }
        },
        {
          "match": {
            "userdomain": "mydomain.com"
          }
        }
      ]
    }
  }
}

`

它将只返回一条记录`

代码语言:javascript
复制
POST socialdata/users/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "username": "mak"
          }
        },
        {
          "match": {
            "userdomain": "newdomain.com"
          }
        }
      ]
    }
  }
}

`

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49079514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档