提问者:小点点

ElasticSearch-如何为每个别名创建索引模板/映射并分别对每个别名执行搜索


is是弹性存储每个别名的索引模板的任何方式。我的意思是使用多个别名(alias1、alias2…)创建索引并为每个别名附加不同的模板。然后对特定别名执行索引/搜索文档。

我这样做的原因是由于多个不同的数据结构(多达50种类型)的文档。

到目前为止我所做的是:

 1. PUT /dynamic_index

 2. POST /_aliases
       { "actions" : [
        { "add" : { "index" : "dynamic_index", "alias" : "alias_type1" } },
        { "add" : { "index" : "dynamic_index", "alias" : "alias_type2" } },
        { "add" : { "index" : "dynamic_index", "alias" : "alias_type3" } }
        ]}
 3. 

    PUT_template/template1 {
      "index_patterns": [
        "dynamic_index"
      ],
      "mappings": {
        "dynamic_templates": [
          {
            "strings_as_keywords": {
              "match_mapping_type": "string",
              "mapping": {
                "type": "text",
                "analyzer": "standard",
                "copy_to": "_all",
                "fields": {
                  "keyword": {
                    "type": "keyword",
                    "normalizer": "lowercase_normalizer"
                  }
                }
              }
            }
          }
        ],
        "properties": {
          "source": {
            "type": "keyword"
          }
        }
      },
      "aliases": {
        "alias_type1": {
        }
      }
    }

4. same way to alias_type2 , alias_type3 but different fields ...

索引/搜索:尝试按别名创建和搜索文档,如示例所示:

   POST alias_type1/_doc
    {
      "source": "foo" 
     , .....
      
    }

    POST alias_type2/_doc
    {
      "source": "foo123" 
     , .....
      
    }
    
    GET alias_type1/_search
    {
      "query": {
        "match_all": {}
      }
    }
  GET alias_type2/_search
    {
      "query": {
        "match_all": {}
      }
    }

我实际上看到的是,即使我为每个别名索引文档,在搜索时,我看不到每个别名的结果,所有结果在alias_type1、2甚至索引上都是相同的。

我可以在每种类型(别名)的搜索/索引文档方面实现每个别名的分离逻辑吗?

有什么想法吗?


共1个答案

匿名用户

指向同一索引的别名不能有单独的映射!别名就像指向索引的虚拟链接,所以如果你的别名指向同一索引,你会得到相同的结果。如果你想根据你的数据结构有不同的映射,你需要创建多个索引。

更新您还可以使用基于字段的自定义路由以获取更多信息,您可以在此处查看Elastic官方留档。