【问题标题】:Indexing a multi-field property in Elastic Search在 Elastic Search 中为多字段属性编制索引
【发布时间】:2015-12-23 20:49:51
【问题描述】:

我正在尝试重新索引我的文档以使其可排序,这需要使用未分析的“原始”版本的字符串使可排序字段多字段属性。

我正在关注this 文章,但在使用排序查询搜索我的文档时仍然出现错误。

然后我有一个关于数据重新索引的问题......如果我将文档重新索引到这个新索引中,那么我是否需要一些额外的逻辑来设置分析版本和非分析版本或“ raw" 版本的字符串呢?还是弹性搜索会自动填充那个?这是我的领域的样子:

{
    "entityName": {
        "type":"string",
        "fields": {
            "raw": {
                "type":"string",
                "index":"not_analyzed"
            }
        }
    }
}

所以当我索引一个带有_source 的文档时:

{
...
"entityName":"Ned Stark"
...
}

映射到analyzed 字段 not_analyzed 字段是否完成或者我需要做些什么来告诉索引填写“原始”属性也是如此?

【问题讨论】:

  • 它应该同时索引两者。你的情况会怎样?
  • @AndreiStefan 我马上更新。
  • @MattHintzke _source 不会改变,因为它在两种情况下都具有相同的值。问题是它们是如何编入索引的。所以多字段不是创建多个字段,而是逻辑单个字段以不同的方式被多次索引。例如,不允许使用多个分析器,但您可以使用 2 个多字段,每个字段使用不同的分析器。

标签: elasticsearch


【解决方案1】:

不,你不需要做任何其他事情。

重新索引您的文档后,您必须告诉查询应该使用哪些字段,就像您给定的文档文章中一样。

原始子字段:

POST /_search
{
    "query": {
        "match": {
            "entityName.raw": "foo-bar"
        }
    }
}

或原始分析类型:

POST /_search
{
    "query": {
        "match": {
            "entityName": "foo-bar"
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    相关资源
    最近更新 更多