SumitBhavsar Ответов: 0

Как создать эластичный псевдоним динамически?


Я уже пробовал Индексные Псевдонимы | Elasticsearch Reference [2.0] | Elastic[^], но что делать, если мне нужно создать псевдоним в то время, когда документы добавляются в индекс на основе значений, переданных для вставки. здесь, в моем случае, это значение является типом клиента, поэтому я хочу создать псевдоним, который будет добавлен в индекс на основе значения, переданного типу клиента, если значение отличается, он должен создать новый псевдоним, иначе мудрый не будет, Может ли кто-нибудь иметь представление об этом?

Что я уже пробовал:

имя индекса=customeinfo
тип индекса=клиент


Сопоставление Индексов

{
  "customeinfo": {
    "mappings": {
      "Customer": {
        "properties": {
          "Id": {
            "type": "long"
          },
          "Name": {
            "type": "string"
          },
          "Type": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      }
    },
    "settings": {
      "index": {
        "creation_date": "1526625709246",
        "number_of_shards": "1",
        "number_of_replicas": "1",
        "uuid": "uEbfvBvTRK-AGzBaQWqu-Q",
        "version": {
          "created": "2030399"
        }
      }
    },
    "warmers": {}
  }
}


когда новый документ добавляется в эластичный индекс, например
{
  "Id": 1,
  "Name": "Alice",
  "type": "premium"
}


затем следует добавить новый псевдоним, и мой индекс станет похожим
{
  "customeralias": {
    "aliases": {
      "premiumcustomeralias": {
        "filter": {
          "term": {
            "type": "premium"
          }
        }
      }
    },
    "mappings": {},
    "settings": {},
    "warmers": {}
  }
}


опять же новый документ добавляется в эластичный индекс как
{
  "Id": 2,
  "Name": "Bob",
  "type": "basic"
}


затем снова должен быть добавлен новый псевдоним, и мой индекс и индекс станут похожи
{
  "customeralias": {
    "aliases": {
      "premiumcustomeralias": {
        "filter": {
          "term": {
            "type": "premium"
          }
        }
      },
      "basiccustomeralias": {
        "filter": {
          "term": {
            "type": "basic"
          }
        }
      }
    },
    "mappings": {},
    "settings": {},
    "warmers": {}
  }
}

0 Ответов