2015-10-31 2 views
2

У меня возникла проблема, заключающаяся в том, что как установить «индекс»: «not_analyzed» глобально для поиска эластичного значения строк в формате json format, чтобы он при составлении отчетов не будет маркироваться. В настоящее время я сделал эту проверку индивидуально. Но, когда появляется новое свойство, это создает проблему. (с использованием эластичной версии поиска 1.7.2)как установить «индекс»: «not_analyzed» глобально для поиска эластичных данных

Например: - Если я указываю новый адрес строки, указывающий адрес, когда приходит значение типа «bangalore india», тогда оно будет рассматриваться как 2 отдельных значения как «Бангалор» и «Индия» при составлении отчетов.

Вот пример формата файла json mapper, который я использую. Дайте мне знать, как я могу установить его глобально для такой же ..

{ 
"user" : { 
     "_index" : { 
     "enabled" : true 
    }, 
    "_id" : { 
     "index": "not_analyzed", 
     "store" : "yes" 
    }, 
    "properties" : { 

     "id" : { 
      "type" : "long" 
     }, 
     "name" : { 
      "type" : "string", 
      "index" : "not_analyzed" 
     }, 
     "presentValue" : { 
      "type" : "string", 
      "index" : "not_analyzed" 
     }, 
     "dateOfBirth" : { 
      "type" : "date" 
     } 

    } 
} 
} 

ответ

3

Вы должны использовать dynamic_template при создании индекса. С динамической strings отображения ниже, все новые строковые поля, которые будут создаваться динамически будет not_analyzed

PUT my_index 
{ 
    "mappings": { 
    "user": { 
     "_index": { 
     "enabled": true 
     }, 
     "_id": { 
     "store": "yes" 
     }, 
     "dynamic_templates": [ 
     { 
      "strings": { 
      "match_mapping_type": "string", 
      "match": "*", 
      "mapping": { 
       "type": "string", 
       "index": "not_analyzed" 
      } 
      } 
     } 
     ], 
     "properties": { 
     "id": { 
      "type": "long" 
     }, 
     "name": { 
      "type": "string", 
      "index": "not_analyzed" 
     }, 
     "presentValue": { 
      "type": "string", 
      "index": "not_analyzed" 
     }, 
     "dateOfBirth": { 
      "type": "date" 
     } 
     } 
    } 
    } 
} 
+0

Благодаря Вэл , Он работает :) – Jesalcv

+0

Убедитесь, что, если мы предоставляем детали существующих полей, тогда мы должны указать «index»: «not_analyzed» отдельно, иначе он переопределит начальное сопоставление, сделанное динамическими шаблонами. (Или не указывайте какие-либо данные о сопоставлении существующих полей, которые появляются в виде строки.) – Jesalcv

0

Далее будет удостовериться, что все поля в индексе myindex имеют дополнительное поле в качестве исходного

curl -X PUT "http://localhost:9200/myindex" -d '{ 
    "settings": { 
    "index": { 
     "number_of_shards": 1, 
     "number_of_replicas": 1 
    } 
    }, 
    "mapping": { 
    "_default_": { 
     "dynamic_templates": [ 
     { 
      "multi_strings": { 
      "match_mapping_type": "string", 
      "mapping": { 
       "type": "string", 
       "fields": { 
       "raw": { 
        "type": "string", 
        "index": "not_analyzed" 
       } 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
}' 
Смежные вопросы