2017-02-24 19 views
0

私は弾性検索を初めて利用しており、クエリに問題があります。`field`を使用したクエリは何も返しません。

私がすべてマッチすると、私はこれを取得します。

{ 
 
    "took": 1, 
 
    "timed_out": false, 
 
    "_shards": { 
 
    "total": 1, 
 
    "successful": 1, 
 
    "failed": 0 
 
    }, 
 
    "hits": { 
 
    "total": 5, 
 
    "max_score": 1, 
 
    "hits": [{ 
 
     "_index": "stations", 
 
     "_type": "station", 
 
     "_id": "4432", 
 
     "_score": 1, 
 
     "_source": { 
 
      "SiteName": "Abborrkroksvägen", 
 
      "LastModifiedUtcDateTime": "2015-02-13 10:34:20.643", 
 
      "ExistsFromDate": "2015-02-14 00:00:00.000" 
 
     } 
 
     }, 
 
     { 
 
     "_index": "stations", 
 
     "_type": "station", 
 
     "_id": "9110", 
 
     "_score": 1, 
 
     "_source": { 
 
      "SiteName": "Abrahamsberg", 
 
      "LastModifiedUtcDateTime": "2012-03-26 23:55:32.900", 
 
      "ExistsFromDate": "2012-06-23 00:00:00.000" 
 
     } 
 
     } 
 
    ] 
 
    } 
 
}

マイ検索クエリは次のようになります。

{ 
 
    "query": { 
 
    "query_string": { 
 
     "fields": ["SiteName"], 
 
     "query": "a" 
 
    } 
 
    } 
 
}

問題は、私は上記のクエリを実行したとき、私は奇妙な空の結果を得ることです。私は私の索引から両方の文書を受け取るべきです、そうですか?

私は間違っていますか?私のデータを間違ってインデックス付けしたのですか、またはクエリがちょうどうんざりしましたか?

私は何か助けてくれてありがとう。みんなありがとう!

答えて

2

データやクエリに間違いはありません。あなたはelasticsearchにデータがどのように格納されるのか理解していないようです。

まず、インデックスデータ("SiteName": "Abborrkroksvägen"および"SiteName": "Abrahamsberg")は、個々の分析用語として格納されます。

あなたが"query":"a"(means here you are looking for the term "a")を使用してESを照会すると何の条件が存在しないとして、あなたが空の結果が得られますので、それはどんな試合は用語aであるかどうかを探しますが。

"query":"a*"(means all terms starts with "a")を使用してESにクエリを実行すると、期待通りに返されます。

これはあなたの質問を明確にします。

関連する問題