У меня есть 1702 документа, проиндексированных в эластичном поиске, в котором есть категория в качестве одного из полей, а также поле с именем SequentialId.
Сначала я получил документы с категорией 1.1, которые находятся между документом 1 и документом 850, как показано ниже.
**POST testucb/docs/_search
{
"size": 1702,
"query": {
"bool": {
"must": [
{"match": {
"Category": "1.1"
}}
],
"filter":[
{
"range":
{
"SequentialId":
{
"gte":1,
"lte":850
}
}
}
]
}
}
}**
приведенный выше запрос дал мне 834 документа, которые соответствуют категории 1.1. (У меня есть двоичный файл для анализа 834 _id из результирующего вывода JSON.) Теперь моя цель состоит в том, чтобы предоставить эти 834 _id в более похожий на этот запрос в качестве обучающего набора для остальных документов, которые являются моим тестовым набором (документы от 851 до 1702 - это мой тестовый набор)
Я попробовал этот запрос more_like_this ниже с фильтром.
POST /testucb/docs/_search
{
"size": 1702,
"fields": [
"SequentialId",
"Category",
"PRIMARY_CONTENT_EN"
],
"query": {
"more_like_this":
{
"fields": [
"PRIMARY_CONTENT_EN"
],
"like":[
<-----------834 _ids goes here ---->
],
**"filter":[
{
"range":
{
"SequentialId":
{
"gte":851,
"lte":1702**
}
}
}
],
"min_term_freq": 1,
"min_doc_freq": 1,
"max_query_terms": 15,
"min_word_len": 3,
"stop_words": [
],
"boost": 2,
"include":false
}
}
}
Я получаю исключение при синтаксическом анализе запроса, в котором говорится, что MLT не поддерживает фильтр. Я не уверен, как я могу предоставить оставшиеся документы с последовательным идентификатором от 851 до 1702 в качестве моего тестового набора.
Надеюсь, я понял, чего я ожидаю. Не могли бы вы, ребята, помочь мне, как выполнить мою задачу? Я новичок в эластичном поиске.