Jetzt weiß ich, dass Schlüsselwort nicht unstrukturierten Text umfassen soll, aber sagen wir, dass es aus irgendeinem Grund einfach so passiert ist, dass solcher Text in Keyword-Feld geschrieben wurde. Bei der Suche nach solchen Dokumenten mit Match- oder Termabfragen wird das Dokument nicht gefunden, aber bei der Suche mit query_string wird das Dokument durch eine teilweise Übereinstimmung gefunden (ein "term" innerhalb des Schlüsselworts). Ich verstehe nicht, wie dies möglich ist, wenn in der Dokumentation von Elasticsearch eindeutig angegeben wird, dass das Schlüsselwort invers indexiert wird, ohne dass die Begriffe in Token umgewandelt werden. Beispiel: Meine Indexabbildung:Elasticsearch query_string Suche komplexes Schlüsselwort nach seinen Begriffen
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"full_text": {
"type": "text"
},
"exact_value": {
"type": "keyword"
}
}
}
}
}
Dann habe ich ein Dokument in:
PUT my_index/my_type/2
{
"full_text": "full text search",
"exact_value": "i want to find this trololo!"
}
Und meine Überraschung vorstellen, als ich ein Dokument nach Stichwort Begriff bekommen, keine vollständige Übereinstimmung:
GET my_index/my_type/_search
{
"query": {
"match": {
"exact_value": "trololo"
}
}
}
- kein Ergebnis;
GET my_index/my_type/_search
{
"query": {
"term": {
"exact_value": "trololo"
}
}
}
- kein Ergebnis;
POST my_index/_search
{"query":{"query_string":{"query":"trololo"}}}
- mein Dokument zurückgegeben:
"hits": {
"total": 1,
"max_score": 0.27233246,
"hits": [
{
"_index": "my_index",
"_type": "my_type",
"_id": "2",
"_score": 0.27233246,
"_source": {
"full_text": "full text search",
"exact_value": "i want to find this trololo!"
}
}
]
}
das macht Sinn. Sicher, ich kenne jedes Feld, ich hatte einfach nicht genug praktische Erfahrung, seit wir vor kurzem mit der Untersuchung von Elastic Stack angefangen haben und es nicht geschafft habe, alles zusammen zu stellen. Vielen Dank! – yuranos87