Я пытаюсь запросить домен AWS ElasticSearch у Lambda worker.
Для этого я использую http- aws -es и основной javascript клиент для Elasti c Поиск.
Я запрашиваю документы со следующими соответствующими полями:
- A
ref
поле - String - A
status
field - String ENUM (REMOVED
, BLOCKED
, PUBLISHED
, PENDING
, VERIFIED
) - A
field
field - String Array - A
thematics
field - Строковый массив
Я хочу достичь:
- Отфильтровать все документы, которые не являются
PUBLISHED
или VERIFIED
или где поле ref
set - Возвращает наилучшие совпадения с моим
keywwords
аргументом (строковым массивом) относительно значений в field
и thematics
- Сортировка для размещения документов со статусом
PUBLISHED
сначала - Ограничьте количество результатов до 20
Я нашел оператор more_like_this
и попробовал. Я строю свой запрос шаг за шагом, и фактическая версия, по крайней мере, не возвращает ошибку, но документы не возвращаются. Он по-прежнему пропускает фильтр ref
+ # 3 и # 4 сверху. Вот запрос:
const client = new elasticsearch.Client({
host: ELASTICSEARCH_DOMAIN,
connectionClass: httpAwsEs,
amazonES: {
region: AWS_REGION,
credentials: new AWS.EnvironmentCredentials('AWS')
}
})
let keywords = event.arguments.keywords
let rst = await client.search({
body: {
'query': {
'bool': {
'filter': {
'bool': {
'must_not': [
{
'term': {
'status': 'REMOVED'
}
},
{
'term': {
'status': 'PENDING'
}
},
{
'term': {
'status': 'BLOCKED'
}
}
]
}
},
'must': {
'more_like_this': {
'fields': ['field', 'thematics'],
'like': keywords,
'min_term_freq': 1,
'max_query_terms': 2
},
'should': [
{
'term': {
'status': 'PUBLISHED'
}
}
]
}
}
}
}
})
console.log(rst)
return rst
Мне нужно загрузить свой лямбда-код, чтобы отладить это, и это сильно усложняет отладку. Поскольку я никогда раньше не выполнял запросы ES, я хотел получить хотя бы несколько подсказок относительно того, как поступить с этим, или узнать, неправильно ли я использую синтаксис запроса ES.
РЕДАКТИРОВАТЬ:
По запросу, вот мое отображение индекса (с типом JS):
- текст города (строка)
- текст contact_email ( String)
- текст contact_entity (String)
- contact_firstname text (String)
- contact_lastname text (String)
- текст контактов (String list)
- текст страны (String)
- createdAt date (String)
- текст описания (String)
- editKey text (String)
- текст поля ( String)
- id text (String)
- name text (String)
- pubId text (String)
- ref текст (String)
- текст состояния (строка)
- текст состояния (строка)
- тематический текст (массив строк)
- текст типа (массив строк)
- updatedAt ( String)
- текст URL (String)
- verifyKey text (String)
- текст зоны (String Array)
Взято из AWS elasti c консоль управления поиском (вкладки указателя> сопоставление с)