ここで、キーワードは構造化されていないテキストを含むはずではありませんが、何らかの理由でそのようなテキストがキーワードフィールドに書き込まれたとしましょう。 一致または用語のクエリを使用してそのようなドキュメントを検索する場合、ドキュメントは見つかりませんが、query_stringを使用して検索すると、部分一致(キーワードの「用語」)によってドキュメントが検索されます。私はElasticsearchのためのドキュメントがタームのトークン化なしでキーワードが逆索引付けされていることを明確に述べているとき、これがどのように可能であるか理解していません。 例: 私のインデックスマッピング:Elasticsearch query_string複雑なキーワードをキーワードで検索します
PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"full_text": {
"type": "text"
},
"exact_value": {
"type": "keyword"
}
}
}
}
}
は、それから私は、文書を置く:
PUT my_index/my_type/2
{
"full_text": "full text search",
"exact_value": "i want to find this trololo!"
}
そして、私はキーワードの用語ではなく、完全に一致して、文書を取得するときに私の驚きを想像:
GET my_index/my_type/_search
{
"query": {
"match": {
"exact_value": "trololo"
}
}
}
- 結果はありません。
GET my_index/my_type/_search
{
"query": {
"term": {
"exact_value": "trololo"
}
}
}
- 結果なし。
POST my_index/_search
{"query":{"query_string":{"query":"trololo"}}}
- 私の文書が返されます。
"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!"
}
}
]
}
が理にかなっています。確かに私はすべてのフィールドを知っていますが、ちょうど最近、Elasticスタックの調査を開始して以来、実践的な経験が足りませんでした。ありがとう! – yuranos87