Я использую elasticsearch в первый раз со вчерашнего дня, и я изо всех сил пытаюсь получить простые функции и работать после двух дней работы над этим из-за моих ограниченных знаний ,неавторизованный параметр содержит непризнанный параметр: [mapping] - Создание индекса ElasticSearch
Моя основная цель - выполнить крафт с помощью NodeJs + ElasticSearch. Теперь я застрял, чтобы создать индекс, используя функцию «mapping».
Мой прямой вопрос: что мне нужно сделать, чтобы этот код работал?
return client.indices.create({
index: 'index_created_with_map',
mapping: {
posts: {
user: {
type: 'string'
},
post_date: {
type: 'string'
},
message: {
type: 'string'
}
}
}
});
Любое предложение, что проверить будет оценено.
Плюс, что, хотя и не является частью моего основного вопроса, любой комментарий, как правильно вернуть функцию get и search в «response.send (JSON.stringify (данные из elasticsearch))» и как сопоставить «post_date», тип даты вместо строки будет оценен по мере того, как я застрял на нем.
Пыльник - это все, что я пробовал до сих пор. Я вижу бросок «Расширение Chrome ElastiSearch ToolBox», когда я пытаюсь без функции «сопоставления», например, в addToIndex ниже, чем он работает, но я хотел бы иметь отдельные функции, один для создания индекса, который я буду запускать сразу один раз, а другой для создания «запись», которая будет частью моей сыпи.
PS. Я нашел очень подобный вопрос здесь без ответа
illegal_argument_exception: no mapping found for field
журнал ошибок:
Unhandled rejection Error: [illegal_argument_exception] request [/index_created_with_map] contains unrecognized parameter: [mapping]
at respond (/home/demetrio/dev/WSs/NodeJs/greencard-dmz-es-oracle/node_modules/elasticsearch/src/lib/transport.js:289:15)
at checkRespForFailure (/home/demetrio/dev/WSs/NodeJs/greencard-dmz-es-oracle/node_modules/elasticsearch/src/lib/transport.js:248:7)
at HttpConnector.<anonymous> (/home/demetrio/dev/WSs/NodeJs/greencard-dmz-es-oracle/node_modules/elasticsearch/src/lib/connectors/http.js:164:7)
at IncomingMessage.wrapper (/home/demetrio/dev/WSs/NodeJs/greencard-dmz-es-oracle/node_modules/lodash/lodash.js:4968:19)
at emitNone (events.js:72:20)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:905:12)
at nextTickCallbackWith2Args (node.js:441:9)
at process._tickCallback (node.js:355:17)
мой контроллер NodeJs
var elasticsearch = require('elasticsearch');
var Promise = require('bluebird');
exports.teste = function (req, res) {
var log = console.log.bind(console);
var client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
function createIndexWithMapping() {
return client.indices.create({
index: 'index_created_with_map',
mapping: {
posts: {
user: {
type: 'string'
},
post_date: {
type: 'string'
},
message: {
type: 'string'
}
}
}
});
}
function createIndexWithoutMapping() {
return client.create({
index: 'index_created_without_map',
type: 'posts',
id: '1',
body: {
user: 'me',
post_date: new Date(),
message: 'Hello World!'
},
refresh: true
});
}
function addToIndex() {
return client.index({
index: 'index_created_...according to the test',
type: 'posts',
id: '1',
body: {
user: 'me2',
post_date: new Date(),
message: 'Hello World!2'
},
refresh: true
});
}
function search() {
return client.search({
index: 'index_created_...according to the test',
type: 'posts',
body: {
query: {
match: {
body: 'Hello'
}
}
}
}).then(log);
}
function getFromIndex() {
return client.get({
index: 'index_created_...according to the test',
type: 'posts',
id: 1
}).then(log);
}
function closeConnection() {
client.close();
}
Promise.resolve()
.then(createIndexWithMapping)
//.then(createIndexWithoutMapping)
// .then(addToIndex)
// .then(search)
// .then(getFromIndex)
.then(closeConnection);
return res.send("a");
};
package.json
{
"name": "my-first-elasticsearch-app",
"main": "server.js",
"dependencies": {
"bcrypt-nodejs": "0.0.3",
"body-parser": "^1.0.2",
"ejs": "^1.0.0",
"elasticsearch": "^12.1.3",
"express": "^4.1.1",
"express-session": "^1.6.1",
"mongoose": "^3.8.8",
"node-rest-client": "^2.5.0",
"oauth2orize": "^1.0.1",
"passport": "^0.2.0",
"passport-http": "^0.2.2",
"passport-http-bearer": "^1.0.1",
"reqclient": "^2.1.0"
}
}
'Promise.resolve () .then (createIndexWithMapping) .... 'выглядит неправильно. Как вы думаете, что вы достигли с помощью этого кода? –
Вы пытались поместить свойство «сопоставления» в свойство «тело», как предлагается здесь? http://stackoverflow.com/a/25456701/2848895 – deathyr
Jaromanda, я понимаю, что создаю индекс. Это мой первый опыт использования ELasticSearch. Как простая аналогия: «Я хочу создать пустую базу данных». PS. Я знаю, что база данных не является правильным термином в ElasticSearch, но вы, вероятно, можете понять, что я хочу делать с этим комментарием. В https://gist.github.com/StephanHoyer/b9cd6cbc4cc93cee8ea6 вы можете увидеть аналогичную идею: «... client.indices.create ({ index: 'test', mapping: { дом: { имя: { Тип: 'строка' ... – DemeCarvO