ElasticSearch: Index only the fields specified in the mapping

У меня есть установка ElasticSearch, получающая данные для индексации через реку CouchDB. У меня проблема в том, что большинство полей в документах CouchDB фактически не имеют отношения к поиску: это поля, используемые приложением (ID и т.д.), и я не хочу получать ложные срабатывания из-за этих полей. Кроме того, индексирование ненужных данных кажется мне пустой тратой ресурсов".

Чтобы решить эту проблему, я определил связку, в которой я указываю поля, которые я хочу индексировать. Я использую pyes для доступа к ElasticSearch. Процесс, которому я следую, следующий:

  1. Создайте реку CouchDB, связанную с индексом. Это, очевидно, создает также индекс, и создает отображение "couchdb" в этом индексе, которое, насколько я могу судить, включает все поля, с динамически назначаемыми типами.
  2. Поместил отображение, перестроил его на поля, которые я действительно хочу индексировать.

Это определение индекса, полученное с помощью:

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.
  • Созданная мной связка, похоже, не имеет никакого эффекта: нет документов, проиндексированных этой связкой

Есть ли у вас какие-нибудь советы по этому поводу?

EDIT

Вот что я делаю на самом деле, в точности как напечатано:

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", которое является единственным, которое я специально упомянул в определении связки. Почему так?

6
задан dangonfast 27 January 2012 в 00:56
поделиться