2015-04-30 4 views
0

Я сделал _mapping запрос на поиск elastics и посмотрел, что для одного поля используется пользовательский анализатор. Выход на поле так:Как получить источник анализатора custome от поиска elastics?

"myFieldName": { 
    "type": "string", 
    "analyzer": "someCustomAnalyzer" 
} 

Так есть способ получить источник для этого someCustomAnalyzer? Я попробовал запрос curl -XGET localhost:9200/_analyze?analyzer=someCustomAnalyzer и получил:

{ 
    "error": "ElasticsearchIllegalArgumentException[text is missing]", 
    "status": 400 
} 

Если добавить text аргумент в строке запроса я получил анализирующий результат анализа, но мне нужно определение анализатора.

ответ

1

Вы можете увидеть его с помощью settings. Это более читаемо сейчас в 1.5, чем раньше.

Так что, если я создать индекс с нетривиальным анализатором:

PUT /test_index 
{ 
    "settings": { 
     "number_of_shards": 1, 
     "analysis": { 
     "filter": { 
      "edge_ngram_filter": { 
       "type": "edge_ngram", 
       "min_gram": 2, 
       "max_gram": 20 
      } 
     }, 
     "analyzer": { 
      "edge_ngram_analyzer": { 
       "type": "custom", 
       "tokenizer": "standard", 
       "filter": [ 
        "lowercase", 
        "edge_ngram_filter" 
       ] 
      } 
     } 
     } 
    }, 
    "mappings": { 
     "doc": { 
     "_all": { 
      "enabled": true, 
      "index_analyzer": "edge_ngram_analyzer", 
      "search_analyzer": "standard" 
     }, 
     "properties": { 
      "first_name": { 
       "type": "string", 
       "include_in_all": true 
      }, 
      "last_name": { 
       "type": "string", 
       "include_in_all": true 
      }, 
      "ssn": { 
       "type": "string", 
       "index": "not_analyzed", 
       "include_in_all": true 
      } 
     } 
     } 
    } 
} 

я могу получить параметры индекса с:

GET /test_index/_settings 
... 
{ 
    "test_index": { 
     "settings": { 
     "index": { 
      "creation_date": "1430394627755", 
      "uuid": "78oYlYU9RS6LZ5YFyeaMRQ", 
      "analysis": { 
       "filter": { 
        "edge_ngram_filter": { 
        "min_gram": "2", 
        "type": "edge_ngram", 
        "max_gram": "20" 
        } 
       }, 
       "analyzer": { 
        "edge_ngram_analyzer": { 
        "type": "custom", 
        "filter": [ 
         "lowercase", 
         "edge_ngram_filter" 
        ], 
        "tokenizer": "standard" 
        } 
       } 
      }, 
      "number_of_replicas": "1", 
      "number_of_shards": "1", 
      "version": { 
       "created": "1050099" 
      } 
     } 
     } 
    } 
} 

Вот код, который я использовал:

http://sense.qbox.io/gist/4a38bdb0cb7d381caa29b9ce2c3c154b63cdc1f8