我是 ElasticSearch 新手,所以这是一个非常基本的问题。
如果我将一个字段映射为索引中的关键字,文档是否应该包含该字段的字符串数组?还是所有关键字用空格分隔的字符串?
如果我的索引看起来像这样(关键字是我们感兴趣的):
{
"esidx_j_cv" : {
"mappings" : {
"j_cv" : {
"properties" : {
"Id" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"Keyword" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"Name" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
文件应该是这样的:
{
"_index" : "esidx_j_cv",
"_type" : "j_cv",
"_id" : "2fab7349-c13f-447a-95fa-984df6836c14",
"_score" : 1.0,
"_source" : {
"Id" : "2fab7349-c13f-447a-95fa-984df6836c14",
"Name" : "Jim Bloggs",
"Keyword" : [
"San",
"Andreas",
"Fault",
"California"
]
}
}
Run Code Online (Sandbox Code Playgroud)
或者像这样:
{
"_index" : "esidx_j_cv",
"_type" : "j_cv",
"_id" : "2fab7349-c13f-447a-95fa-984df6836c14",
"_score" : 1.0,
"_source" : {
"Id" : "2fab7349-c13f-447a-95fa-984df6836c14",
"Name" : "Jim Bloggs",
"Keyword" : "San Andreas Fault California"
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
亚当。
使用数组是最惯用的,也是我的建议。您可以像这样查询它(此查询实际上适用于任一选项):
GET index/_search
{
"query": {
"match": {
"Keyword": "California"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3140 次 |
| 最近记录: |