Я новичок в elasticsearch, так что будьте добры.
Я пытаюсь хранить и запрашивать данные, помеченные N тегами. Я хочу сравнить массив поисковых запросов с сохраненным массивом и вернуть результаты в том порядке, в котором элементы соответствуют большинству тегов.
Пример набора данных:
{ name: "karl", tags: ["terrible", "programmer"] }
{ name: "bob", tags: ["awesome", "programmer"] }
Пример запроса, соответствующий обоим людям:
query: { tags: ["programmer"] }
result: [karl, bob]
И в этом примере возвращаются оба, но b имеет высокий балл, потому что совпало больше тегов, хотя Карл по-прежнему отображается, несмотря на то, что он не соответствует awesome
.
query: { tags: ["programmer", "awesome"] }
result: [bob, karl]
У меня вот такой шкаф, но он, похоже, не на боб выше, чем у Карла.
{
"query": {
"bool": {
"should": [
{ "match": { "tags": "programmer" } },
{ "match": { "tags": "awesome" } }
],
"minimum_number_should_match": 1
}
}
}
Хотелось бы поддержки :-) Спасибо!