0
我正在運行ES 2.3.3。我想索引一個未分析的字符串,但將其截斷爲一定數量的字符。根據文檔,ignore_above屬性不會索引超出所提供值的字段。我不想那樣。我想要說一個可能長達30K的字段並將其縮短到10K長,但仍然可以對保留的10K進行篩選和排序。Elasticsearch 2.3.x中的截斷和索引字符串值
這在ES 2.3.3中是可行的還是我需要在索引文檔之前使用Java來完成此操作。
我正在運行ES 2.3.3。我想索引一個未分析的字符串,但將其截斷爲一定數量的字符。根據文檔,ignore_above屬性不會索引超出所提供值的字段。我不想那樣。我想要說一個可能長達30K的字段並將其縮短到10K長,但仍然可以對保留的10K進行篩選和排序。Elasticsearch 2.3.x中的截斷和索引字符串值
這在ES 2.3.3中是可行的還是我需要在索引文檔之前使用Java來完成此操作。
我想索引一個未分析的字符串,但將其截斷爲一定數量的字符。
從技術上講,它可能與Update API and Upsert option,但根據您的確切需要,它可能不是很方便。
比方說,你要索引此文檔:
{
"name": "foofoofoofoo",
"age": 29
}
,但你需要截斷name
字段,以便它只有5個字符。使用更新的API,你必須執行一個腳本:
POST http://localhost:9200/insert/test/1/_update
{
"script" : "ctx._source.name = ctx._source.name.substring(0,5);",
"scripted_upsert": true,
"upsert" : {
"name": "foofoofoofoo",
"age": 29
}
}
這意味着,如果ES沒有找到與給定的ID(這裏ID = 1)的文件,它應該索引裏面upsert
文檔元素,並執行給定的腳本。正如你所看到的,如果你想自動生成id,這很不方便,因爲你必須在URI中提供id。
結果:
GET http://localhost:9200/insert/test/1
{
"_index": "insert",
"_type": "test",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"name": "foofo",
"age": 29
}
}