Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 无结果在映射中,字段_all已指定索引_分析器_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Search,elasticsearch" /> elasticsearch,Search,elasticsearch" />

Search 无结果在映射中,字段_all已指定索引_分析器

Search 无结果在映射中,字段_all已指定索引_分析器,search,elasticsearch,Search,elasticsearch,使用Elasticsearch,我使用自定义映射和自定义分析程序集创建了一个索引,但是我无法对_all字段进行查询搜索 我正在使用这些分析仪: { "analysis": { "analyzer": { "case_insensitive": { "type": "custom", "tokenizer": "keyword", "filter": [

使用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"
}
我希望以下四个字段中的三个将包含在所有字段中,特别是标题、副标题和评论

分析仪工作如下(使用elasticsearch中的分析仪测试进行测试):

“我非常喜欢这部电影,但是我没有看懂。”->“我非常喜欢这部电影,但是我没有看懂”

“这是一个了不起的人的故事。”->“这是一个了不起的人的故事”

我希望至少通过查询“这是一个了不起的男人的故事”来搜索,我应该能够找到文档

我做错了什么

elasticsearch是如何填充“所有”字段的

如果“标题”字段应添加到“所有”字段,使用哪些数据以及如何使用?是使用为“标题”字段选择的分析仪的输出作为_all分析仪的输入,还是使用原始数据

所有字段中的数据流如何?比如说

输入->分析器->标题->索引->分析器->全部

输入->分析器->标题 ->指数分析仪->所有


提前谢谢你

您的映射在我看来还行。我唯一会尝试的是将其中一个字段显式设置为
include\u in\u all=true
,然后重新运行查询

根据文档,可能是因为您正在覆盖其中一个字段的默认值
include_in_all
,因此它可能已更改了对象所有其他字段的默认值。看这里

文件中的相关文本如下:

通过使用默认为true的include_in_all设置,可以逐个字段控制包含在_all字段中。在对象(或根对象)上设置include_in_all会更改该对象中所有字段的默认值

更新:

我想我知道它为什么不起作用。这就是我所做的。首先,我从
\u all
字段中删除了自定义分析器(因此使用标准分析器)。有了它,我可以查询并获得预期的结果。返回任何文档属性中的术语的结果,但查看。至少这证实了
\u all
的一般行为是正确的。接下来,为了测试分析器,我在subtitle字段上用精确的文本进行了查询(因为它使用的是关键字分析器)。这也起了作用。然后我意识到,
\u all
是一个聚合字段,然后进行分析

因此,查询应该包括所有字段中的所有文本。但同样,我们如何知道它们的聚合顺序:)

这个链接有一些信息。下面提取的相关位(来自Shay)

您不想将_all的分析器设置为关键字,_all是文档中所有其他字段的聚合,因此您基本上将整个文本聚合视为单个标记


亲爱的jrao77。谢谢你的回答。我尝试过你所说的,在对象(标题、副标题等)的所有属性(尽管它们的深度相同)中添加显式include_in_all:true,但这并没有改善结果。在映射更改后是否对文档重新编制了索引?如果不重新建立索引,查询将产生相同的结果(即使使用更新的映射)。我已经删除了索引,重新创建了索引,并重新编制了索引。谢谢,我认为你的回答有道理。我创建了一个额外的分析器,它使用空白标记器而不是关键字,并作为_all字段的索引分析器应用。看起来很好用。