Po prostu staram się sprawdzić, ile dokumentów ma taką samą wartość link. Idzie coś dziwnego.


Powiedzmy, czy jeden lub więcej dokumentów ma wartość link: https://twitter.com/someUser/status/1288024417990144000

Szukałem go za pomocą tego zapytania JSON:

/theIndex/_doc/_search

{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "link": "https://twitter.com/someUser/status/1288024417990144000"
                    }
                }
            ]
        }
    }
}

Zwraca dokumenty 522 z 546, przy czym pierwszy dokument jest właściwy. Działa bardziej jak query_string niż must match

Jeśli szukam innego bardziej unikalnego pola, jak sha256sum:

{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "sha256sum": "dad06b7a0a68a0eb879eaea6e4024ac7f97e38e6ac2b191afa7c363948270303"
                    }
                }
            ]
        }
    }
}

Zwraca 1 taki dokument, jak powinien.

Próbowałem wyszukiwania must term Aswell, ale zwraca 0 dokumentów.


Mapowanie

{
  "images": {
    "aliases": {},
    "mappings": {
      "properties": {
        "sha256sum": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "link": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
      }
    },
    "settings": {
      "index": {
        "number_of_shards": "1",
        "provided_name": "images",
        "creation_date": "1593711063075",
        "analysis": {
          "filter": {
            "synonym": {
              "ignore_case": "true",
              "type": "synonym",
              "synonyms_path": "synonyms.txt"
            }
          },
          "analyzer": {
            "synonym": {
              "filter": [
                "synonym"
              ],
              "tokenizer": "keyword"
            }
          }
        },
        "number_of_replicas": "1",
        "uuid": "a5zMwAYCQuW6U4R8POiaDw",
        "version": {
          "created": "7050199"
        }
      }
    }
  }
}

Nie myślę, że taki prosty problem byłby tak trudny do naprawienia. Czy po prostu brakuje mi czegoś tuż przed moimi oczami?

Czy ktoś wie, co może się tu dzieje?

0
Typewar 31 lipiec 2020, 09:32

1 odpowiedź

Najlepsza odpowiedź

Nawet jeśli nie widzę pola {{X0} Jeśli chcesz wykonać dokładne dopasowanie, musisz dopasować się do pola link.keyword i będzie się zachowywać jak oczekujesz:

{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "link.keyword": "https://twitter.com/someUser/status/1288024417990144000"
                                 ^
                                 |
                              add this
                    }
                }
            ]
        }
    }
}
1
Val 31 lipiec 2020, 09:01