【发布时间】:2015-05-11 12:19:06
【问题描述】:
通过 Elasticsearch,我使用自定义映射和自定义分析器集创建了一个索引,但是我无法对 _all 字段进行查询搜索。
我正在使用这些分析器:
{
"analysis": {
"analyzer": {
"case_insensitive": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase",
"asciifolding"
],
"char_filter": "punctuation"
}
},
"char_filter": {
"punctuation": {
"type": "mapping",
"mappings": [
".=>\\u0020",
"-=>\\u0020",
"_=>\\u0020"
]
}
}
}
}
还有这个映射:
{
"article": {
"_all": {
"enabled": true,
"store": "yes",
"index_analyzer": "case_insensitive",
"search_analyzer": "case_insensitive"
},
"properties": {
"title": {
"type": "string",
"index": "analyzed"
},
"subtitle": {
"type": "string",
"analyzer": "case_insensitive"
},
"comment": {
"type": "string",
"index": "not_analyzed"
},
"review": {
"type":"string",
"index": "not_analyzed",
"include_in_all":false
}
}
}
}
然后我添加一个这样的文档:
{
"title": "This is the story of a wonderful man.",
"subtitle":"A man goes on vacation in the worst place possible.",
"comment": "I like the movie very much, however I did not undertand it.",
"review":"Very well"
}
我希望以下 4 个字段中的 3 个应包含在 _all 中,尤其是标题、副标题和评论。
分析器工作如下(使用 elasticsearch 中的分析器测试进行测试):
“我很喜欢这部电影,但我没看懂。” -> “我很喜欢这部电影,但我没看懂”
“这是一个了不起的人的故事。” -> “这是一个了不起的人的故事”
我希望至少使用以下查询搜索 _all:“这是一个了不起的人的故事。”我应该能够找到该文件。
我做错了什么?
elasticsearch 如何填充 _all 字段?
如果字段'title'应该添加到_all字段,使用哪些数据以及如何使用?它是使用为“标题”字段选择的分析器的输出作为_all 的分析器的输入还是使用原始数据?
_all 字段的数据流向如何?例如
输入 -> 分析器 -> 标题 -> index_analysisr -> _all
或
输入 -> 分析器 -> 标题 -> index_analysisr -> _all
提前谢谢你...
【问题讨论】:
标签: search elasticsearch