У меня есть настройка ElasticSearch, получающая данные для индексации через реку CouchDB.У меня проблема в том, что большинство полей в документах CouchDB на самом деле не имеют отношения к поиску: это поля, которые внутренне используются приложением (идентификаторы и т. Д.), И я не хочу получать ложные срабатывания из-за этих полей.Кроме того, индексация ненужных данных кажется мне пустой тратой ресурсов.
Чтобы решить эту проблему, я определил отображение, в котором я указываю поля, которые я хочу индексировать.Я использую pyes для доступа к ElasticSearch.Процесс, которому я следую:
- Создание реки CouchDB, связанной с индексом.По-видимому, это также создает индекс и создает отображение «couchdb» в этом индексе, которое, насколько я вижу, включает в себя все поля с динамически назначаемыми типами.
- Поместите отображение, ограничив его полями.который я действительно хочу индексировать.
Это определение индекса, полученное:
curl -XGET http://localhost:9200/notes_index/_mapping?pretty=true
{
"notes_index" : {
"default_mapping" : {
"properties" : {
"note_text" : {
"type" : "string"
}
}
},
"couchdb" : {
"properties" : {
"_rev" : {
"type" : "string"
},
"created_at_date" : {
"format" : "dateOptionalTime",
"type" : "date"
},
"note_text" : {
"type" : "string"
},
"organization_id" : {
"type" : "long"
},
"user_id" : {
"type" : "long"
},
"created_at_time" : {
"type" : "long"
}
}
}
}
}
У меня многократная проблема:
- что по умолчанию отображение "couchdb" индексирует все поля.Я не хочу это.Можно ли избежать создания этого отображения?Я в замешательстве, потому что это отображение, по-видимому, является тем, которое каким-то образом «соединяется» с рекой CouchDB.
- создается впечатление, что создаваемое мной отображение не имеет никакого эффекта: нет документов, проиндексированных этим отображением
У вас есть какой-нибудь совет по этому поводу?
РЕДАКТИРОВАТЬ
Это то, что я на самом деле делаю, в точности так, как напечатано:
server="localhost"
# Create the index
curl -XPUT "$server:9200/index1"
# Create the mapping
curl -XPUT "$server:9200/index1/mapping1/_mapping" -d '
{
"type1" : {
"properties" : {
"note_text" : {"type" : "string", "store" : "no"}
}
}
}
'
# Configure the river
curl -XPUT "$server:9200/_river/river1/_meta" -d '{
"type" : "couchdb",
"couchdb" : {
"host" : "localhost",
"port" : 5984,
"user" : "admin",
"password" : "admin",
"db" : "notes"
},
"index" : {
"index" : "index1",
"type" : "type1"
}
}'
Документы в index1 по-прежнему содержат поля, отличные от «note_text», который является only , который я специально упомянул в определении отображения.Почему это так?