#elasticsearch
#elasticsearch
Вопрос:
Я очень новичок в эластичном поиске, как мне написать запрос, который ищет ключевое слово (т.Е. проверяйте ключевое слово) во всех полях документа и повышайте для
- точное совпадение для этой ключевой фразы во всех полях.
- вхождения для определенных полей (которые я увеличил на 5 для A, 3 для B и 1 для C)
Я вижу некоторую документацию по match_phrase, но, похоже, она не поддерживает несколько полей.
{
"query": {
"multi_match": {
"query": "test keyword",
"fields": ["A^5", "B^3", "C^1"]
}
}
}
Комментарии:
1. не могли бы вы поделиться своим отображением индекса, образцом документа индекса и ожидаемым результатом поиска?
Ответ №1:
Если вы хотите получить точное совпадение для ключевой фразы во всех полях вместе с повышением, попробуйте следующий поисковый запрос, где используется запрос с несколькими совпадениями с phrase
параметром типа :
Добавление рабочего примера с индексными данными, поисковым запросом и результатом поиска
Индексировать данные:
{
"A":"test keyword",
"B":"a",
"C":"c"
}
{
"A":"a",
"B":"test keyword",
"C":"c"
}
{
"A":"a",
"B":"b",
"C":"test keyword"
}
Поисковый запрос:
{
"query": {
"bool": {
"should": [
{
"multi_match": {
"query": "test keyword",
"fields": [
"A^5",
"B^3",
"C^1"
],
"type":"phrase" <-- note this
}
}
]
}
}
}
Результат поиска:
"hits": [
{
"_index": "stof_64266554",
"_type": "_doc",
"_id": "1",
"_score": 16.285465,
"_source": {
"A": "test keyword",
"B": "a",
"C": "c"
}
},
{
"_index": "stof_64266554",
"_type": "_doc",
"_id": "2",
"_score": 8.142733,
"_source": {
"A": "a",
"B": "test keyword",
"C": "c"
}
},
{
"_index": "stof_64266554",
"_type": "_doc",
"_id": "3",
"_score": 1.6285465,
"_source": {
"A": "a",
"B": "b",
"C": "test keyword"
}
}
]
Комментарии:
1. @StevenZ. спасибо за ваш ответ 🙂 Не могли бы вы принять и поддержать мой ответ 🙂 1 за ваш вопрос 🙂
2. @StevenZ. вы можете принять мой ответ, нажав на большую серую кнопку проверки с левой стороны и проголосовав, нажав на верхний серый треугольник