У меня есть тонна предметов в БД со многими столбцами.Мне нужно выполнить поиск по двум из этих столбцов, чтобы получить один набор данных.В первом столбце, genericCode
, будут сгруппированы все строки, имеющие этот код.Второй столбец, genericId
, вызывает конкретную строку для добавления, поскольку в ней отсутствует список genericCode
, который я ищу.
Внутренний C # настраивает мой json для меня следующим образом, но ничего не возвращает.
{
"from": 0,
"size": 50,
"aggs": {
"paramA": {
"nested": {
"path": "paramA"
},
"aggs": {
"names": {
"terms": {
"field": "paramA.name",
"size": 10
},
"aggs": {
"specValues": {
"terms": {
"field": "paramA.value",
"size": 10
}
}
}
}
}
}
},
"query": {
"bool": {
"must": [
{
"term": {
"locationId": {
"value": 1
}
}
},
{
"terms": {
"genericCode": [
"10A",
"20B"
]
}
},
{
"terms": {
"genericId": [
11223344
]
}
}
]
}
}
}
Я получаю и пустой набор результатов.Если я уберу любой из "terms"
, я получу то, что ожидал.Итак, мне просто нужно объединить эти термины в один поиск.
Я просмотрел здесь много документации: https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html и до сих пор не могу найти то, что ищу.
Допустим, яJelly Belly и я хотим создать пакет желейных бобов со всеми желейными бобами «Звездных войн» и «Дисней», а также добавить все бобы зеленого цвета.Это в основном то, что я пытаюсь сделать.
РЕДАКТИРОВАТЬ: Изменение "must"
на «следует» тоже не совсем правильно.Мне нужно, чтобы это было (в псевдо sql):
SELECT *
FROM myTable
Where locationId = 1
AND (
genericCode = "this", "that
OR
genericId = 1234, 5678
)
locationId
разделяет наши данные важным способом.
Я нашел это сообщение: Объединение запросов в Flexiblesearch bool должно с ИЛИ , и оно приблизило меня, но не до конца ...
Я пробовалнесколько итераций следует> должен> должен> создать этот запрос и получить разные результаты, но ничего точного.