PUT /new_index/
{
"settings": {
"index": {
"type": "default"
},
"number_of_shards": 5,
"number_of_replicas": 1,
"analysis": {
"filter": {
"ap_stop": {
"type": "stop",
"stopwords_path": "stoplist.txt"
},
"shingle_filter" : {
"type" : "shingle",
"min_shingle_size" : 2,
"max_shingle_size" : 5,
"output_unigrams": true
}
},
"analyzer": {
"aplyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["standard",
"ap_stop",
"lowercase",
"shingle_filter",
"snowball"]
}
}
}
}
}
PUT /new_index/document/_mapping/
{
"document": {
"properties": {
"text": {
"type": "string",
"store": true,
"index": "analyzed",
"term_vector": "with_positions_offsets_payloads",
"search_analyzer": "aplyzer",
"index_analyzer": "aplyzer"
},
"original_text": {
"include_in_all": false,
"type": "string",
"store": false,
"index": "not_analyzed"
},
"docid": {
"include_in_all": false,
"type": "string",
"store": true,
"index": "not_analyzed"
}
}
}
}
Мне нужно преобразовать вышеуказанный индекс settings
и mappings
в тип, принятый согласно elastic4s
. Я использую последние elastic4s
и elasticsearch 1.5.2
.Как написать отображение/настройки для индекса с помощью elastic4s?
Я прошел через несколько примеров, приведенных в документации, но я не могу понять, как сделать это, как я пытался создать его таким образом:
client.execute {
create index "new_index" mappings {
"documents" as (
"text" typed StringType analyzer ...
)
}
}
Я не могу понять, как использовать store
, index
, term_vectors
и т. Д., Как указано в запросе PUT.
UPDATE: На основании ответа я был в состоянии сделать этот вид вещи:
create index "new_index" shards 5 replicas 1 refreshInterval "90s" mappings {
"documents" as(
id typed StringType analyzer KeywordAnalyzer store true includeInAll false,
"docid" typed StringType index "not_analyzed" store true includeInAll false,
"original_text" typed StringType index "not_analyzed" includeInAll false,
"text" typed StringType analyzer CustomAnalyzer("aplyzer") indexAnalyzer "aplyzer" searchAnalyzer "aplyzer" store true termVector WithPositionsOffsetsPayloads
)
} analysis (
CustomAnalyzerDefinition(
"aplyzer",
StandardTokenizer,
LowercaseTokenFilter,
shingle tokenfilter "shingle_filter" minShingleSize 2 maxShingleSize 5 outputUnigrams true
)
)
, что я не могу понять теперь, как добавить снежок стеммер и остановить слова путь к файлу aplyzer
анализатор?
Как мне это сделать?
Я был в состоянии сделать это, глядя на тестовых сценариев в источнике.Одна вещь, которую я хочу подтвердить, - это тип 'term_vector', который является' with_positions_offsets_payloads', и я думаю, что в моей версии у меня его нет. Должен ли он быть добавлен в 'domain.scala' как' case-объект WithPositionsOffsetsPayloads расширяет TermVector ("with_positions_offsets_payloads") '? –
Да, этого нет, я только что добавил его к мастеру. – monkjack
Спасибо, я уточню оттуда. –