Как настроить несколько анализаторов для одного поля в asticsearch?

Я пытаюсь добавить анализатор иерархии путей к одному полю в моем типе.

Я хочу настроить анализатор пути и анализатор обратного пути в одном поле, чтобы получить нормальный путь и обратный путь для одного поля.

например,

Путь ="/ угловая / директива / структурный"

Я хочу настроить это поле пути, например, всякий раз, когда я анализирую это поле, я должен получать токены в обычном порядке и в обратном порядке, если я укажу обратное.

Ниже мое отображение.

PUT /elastic_course
{
  "settings": {
    "analysis": {
      "analyzer": {
        "path_analyzer": {
          "tokenizer": "path_tokenizer"
        },
        "reverse_path_analyzer": {
          "tokenizer": "reverse_path_tokenizer"
        }
      },
      "tokenizer": {
        "path_tokenizer": {
          "type": "path_hierarchy",
          "delimiter": "/",
          "replacement": "-"
        },
        "reverse_path_tokenizer": {
          "type": "path_hierarchy",
          "delimiter": "/",
          "replacement": "-"
        }
      }
    }
  },
  "mappings": {
    "book" : {
        "properties": {
           "author": {
              "type": "string",
              "index": "not_analyzed"
           },
           "genre": {
              "type": "string",
              "index": "not_analyzed"
           },
           "score": {
              "type": "double"
           },
           "synopsis": {
              "type": "string",
              "index":"analyzed",
              "analyzer":"english"
           },
           "title": {
              "type": "string"
           },
           "path":{
              "type":"string",
              "analyzer":"path_analyzer",
              "fields": {
                "reverse": {
                  "type":"string",
                  "analyzer":"reverse_path_analyzer"
                }
              }
          }
      }
    }
  }
}

Я настроил этот анализатор. Теперь, как я могу получить токены для пути и обратного пути?

Благодарю.

1 ответ

Решение

Вы можете объявить подполя для path поле, каждое со своим анализатором:

       "path":{
          "type":"string",
          "analyzer":"path_analyzer",
          "fields": {
            "reverse": {
              "type":"string",
              "analyzer":"reverse_path_analyzer"
            }
          }
       }

Тогда вы можете обратиться к path а также path.reverse в ваших запросах.

Другие вопросы по тегам