Я не могу понять, почему elasticsearch не ищет индексы not_analysed. У меня есть следующие настройки в моей модели:Elasticsearch не работает с индексом «not_analyzed»
settings index: { number_of_shards: 1 } do
mappings dynamic: 'false' do
indexes :id
indexes :name, index: 'not_analyzed'
indexes :email, index: 'not_analyzed'
indexes :contact_number
end
end
def as_indexed_json(options = {})
as_json(only: [ :id, :name, :username, :user_type, :is_verified, :email, :contact_number ])
end
И мое картирование в elasticsearch правильное, как показано ниже.
{
"users-development" : {
"mappings" : {
"user" : {
"dynamic" : "false",
"properties" : {
"contact_number" : {
"type" : "string"
},
"email" : {
"type" : "string",
"index" : "not_analyzed"
},
"id" : {
"type" : "string"
},
"name" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
}
}
}
Но проблема, когда я делаю поиск по не проанализированному полю (имя и адрес электронной почты, так как я хотел, чтобы они были не анализировались), то искать только полное слово. Как в приведенном ниже примере, он должен вернуть Джона, Джонни и Тигра, все 3 записи. Но он возвращает только 2 записи.
Я ищу, как показано ниже
settings = {
query: {
filtered: {
filter: {
bool: {
must: [
{ terms: { name: [ "john", "tiger" ] } },
]
}
}
}
},
size: 10
}
User.__elasticsearch__.search(settings).records
Это, как я создаю индекс на моем пользовательском объекте в функции обратного вызова after_save
,
User.__elasticsearch__.client.indices.create(
index: User.index_name,
id: self.id,
body: self.as_indexed_json,
)
Некоторые из документа, который должен соответствовать
[{
"_index" : "users-development",
"_type" : "user",
"_id" : "670",
"_score" : 1.0,
"_source":{"id":670,"email":"[email protected]","name":"john baba","contact_number":null}
},
{
"_index" : "users-development",
"_type" : "user",
"_id" : "671",
"_score" : 1.0,
"_source":{"id":671,"email":"[email protected]","name":"Johny Rocket","contact_number":null}
}
, {
"_index" : "users-development",
"_type" : "user",
"_id" : "736",
"_score" : 1.0,
"_source":{"id":736,"email":"[email protected]","name":"tiger sherof", "contact_number":null}
} ]
Любые предложения, пожалуйста.
Что такое user_type в запросе выше? – Richa
как вы указали? «Джон» или «Джон»? не могли бы вы показать нам документ, который, по вашему мнению, должен совпадать? – ChintanShah25
@ ChintanShah25 добавил документы, которые должны соответствовать –