Поиск с использованием условия «ИЛИ» в поле ключевого слова, которое содержит пробелы - PullRequest
0 голосов
/ 07 января 2020

Мои данные "ключевые слова" содержат пробелы. Таким образом, «X AAA» является одним «ключевым словом». И "B AAA" является еще одним ключевым словом. Мои данные будут иметь только один из них в поле. Таким образом, поле данных никогда не будет выглядеть как комбинация двух «X AAA B AAA». В поле всегда будет только одно «ключевое слово».

Вот пример набора данных из 6 строк для поля:
X AAA
Y AAA
Z AAA
X BBB
Y BBB
Z BBB

Мое отображение выглядит следующим образом для поля

"mappings" : {
  "properties" : {
    "MYKEYWORDFIELD" : {
      "type" : "keyword"
    },
    ...

Когда я запрашиваю MYKEYWORDFIELD только часть ключевого слова, например «ААА» Я не получаю никаких результатов. Это то, что я хочу. Таким образом, я понимаю, что поле обрабатывается, поскольку все содержимое поля является одним ключевым словом. Я правильно понимаю?

Кроме того, я хочу запросить MYKEYWORDFIELD для "X AAA" ИЛИ "X BBB" в одном запросе. Возможно ли это сделать? Если да, то как мне это сделать?

====
1/7/20 Обновление: чтобы уточнить результаты моего запроса, я не хочу потенциально получать строки, отличные от те, в запросе. Поэтому я не верю, что могу использовать слово «следует», которое влияет только на оценку результатов и, следовательно, может позволить другим строкам, таким как «Y BBB», отображаться в моем запросе.

1 Ответ

0 голосов
/ 07 января 2020

Вы можете использовать должен запрос, например:

{
    "query" :{
        "bool" :{
            "should": [
                {
                    "match" :{
                        "MYKEYWORDFIELD.keyword": "X AAA"
                    }
                },
                {
                    "match" :{
                        "MYKEYWORDFIELD.keyword": "X BBB"
                    }
                }
            ]
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...