首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch:如何搜索user_defined字段?

问Elasticsearch:如何搜索user_defined字段?
EN

Stack Overflow用户
提问于 2016-03-21 03:05:52
回答 2查看 124关注 0票数 0

我使用mysql存储用户数据,并通过Elasticsearch搜索数据。对于mysql,我有一个用户定义的字段,这个字段可以存储JSON格式的数据。

下面的示例数据如下:

代码语言:javascript
复制
data1 = 
{
"name" : "test1",
"age": 10,
"user_defined": {
  "a" : "aaa",
  "b" : "bbb",
  "c" : "ccc",
  .....
  }
}

data2 = 
{
"name" : "test2",
"age": 20,
"user_defined": {
  "d" : "ddd",
  "e" : "eee",
  "f" : "fff",
  .....
  }
}

对于user_defined字段,键的数目不固定,值的类型都是字符串,希望每个键都能被搜索,如何定义映射?如何用Elasticsearch搜索这类数据?

有人有好主意吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-21 04:55:44

您可以将user_defined的映射定义为"type": "object",如下所示:

代码语言:javascript
复制
PUT your_index
{
  "mappings": {
    "your_type": { 
      "properties": {
        "name": {
          "type": "string"
        },
        "age": {
          "type": "integer"
        },
        "user_defined": {
          "type": "object"
        }
      }
    }
  }
}

之后,您可以对文档进行索引,并使用查询DSL轻松地搜索它们。

代码语言:javascript
复制
POST your_index/_search
{
  "query": {
    "match" : {
       "user_defined.a" : "aaa"
    }
  }
}
票数 1
EN

Stack Overflow用户

发布于 2016-03-21 03:11:14

默认情况下,Elasticsearch中的文档中的每个字段都是可索引和可搜索的。

Elasticsearch提供了一个搜索Lite API和一个用于搜索的查询DSL。

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

https://stackoverflow.com/questions/36122516

复制
相关文章

相似问题

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