#python #elasticsearch
#python #elasticsearch
Вопрос:
В mongodb есть список, например:
db_name = "Test"
collection_name = "Map"
db.Map.findOne()
{
"_id" : ObjectId(...),
"Id" : "576",
"FirstName" : "xyz",
"LastName" : "abc",
"skills" : [
"C ",
"Java",
"Python",
"MongoDB",
]
}
В индексе elastcisearch есть список (я использую kibana для выполнения запросов)
GET /user/_search
{
"took" : 31,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 7,
"max_score" : 1.0,
"hits" : [
{
"_index" : "customer",
"_type" : "_doc",
"_id" : "5",
"_score" : 1.0,
"_source" : {
"name" : "xyz abc"
"Age" : 21,
"skills" : [
"C ",
"Java",
"Python",
"MongoDB",
]
}
},
]
}
}
Кто-нибудь может помочь с запросом elasticsearch, который будет сопоставлять обе записи на основе навыков.
Я использую Python для написания кода
Если совпадение найдено, я пытаюсь получить имя и фамилию этого пользователя
First name : "xyz"
Last name : "abc"
Комментарии:
1. Какие две записи вы хотите сопоставить и на основе каких навыков? Индексируются ли обе записи в elastic search? Что такое сопоставление по индексу? Пожалуйста, будьте более понятны в этих вопросах.
2. Одна запись находится в mongodb, а другая в elasticsearch. Я хочу сопоставить обе записи на основе всего списка навыков. Если весь список навыков совпадает, тогда возвращаются только имя и фамилия
3. Mongodb и elasticsearch полностью отличаются с точки зрения схемы, хранилища, способа запроса и т.д. Обе записи должны быть в индексе elasticsearch, чтобы к ним можно было запрашивать.
4. Предполагая, что обе записи находятся в одном и том же индексе эластичного поиска, каким будет запрос для сопоставления обеих записей на основе всего списка навыков
5. Просто уточнение; все навыки должны совпадать или какой-либо из заданных навыков?
Ответ №1:
Предполагая, что вы индексируете весь документ в elastic, и из них вы хотите сопоставить документы, в которых skills
есть оба java
, и mongodb
запрос будет иметь вид:
{
"query": {
"bool": {
"filter": [
{
"term": {
"skills": "mongodb"
}
},
{
"term": {
"skills": "java"
}
}
]
}
}
}
Комментарии:
1. @Kiran: Помогло ли это вам?