0
votes

The elasticsearch version I used is es2.2. I type the same code as the official tutorial for full-text search. (https://www.elastic.co/guide/en/elasticsearch/guide/current/match-query.html)

It seems the full-text doesn't work for me. What's wrong with my setting? Thanks!
The code I type is below:

curl -XDELETE 'localhost:9200/my_index '
curl -XPUT 'localhost:9200/my_index ' -d '
{ 
 "settings": { "number_of_shards": 1 }
}'
curl -XPOST 'localhost:9200/my_index/my_type/_bulk' -d'
{ "index": { "_id": 1 }}
{ "title": "The quick brown fox" }
{ "index": { "_id": 2 }}
{ "title": "The quick brown fox jumps over the lazy dog" }
{ "index": { "_id": 3 }}
{ "title": "The quick brown fox jumps over the quick dog" }
{ "index": { "_id": 4 }}
{ "title": "Brown fox brown dog" }'

curl -XGET 'localhost:9200/my_index/my_type/_search' -d'
{
    "query": {
        "match": {
            "title": "QUICK!"
        }
    }
}'

The returned result is :

{
  "took": 1,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "failed": 0
  },
  "hits": {
    "total": 0,
    "max_score": null,
    "hits": []
  }
}

I can get only one hit when I input the exact query, which is stored in the index.

 curl -XGET 'localhost:9200/my_index/my_type/_search' -d'
 {
     "query": {
         "match": {
             "title": "The quick brown fox"
         }
     }
 }'

The output is: {"took":1,"timed_out":false,"_shards":{"total":1,"successful":1,"failed":0},"hits":{"total":1,"max_score":1.4054651,"hits":[{"_index":"my_index","_type":"my_type","_id":"1","_score":1.4054651,"_source":{ "title": "The quick brown fox" }}]}}

I also test the analyzer:

curl -XGET 'localhost:9200/_analyze' -d'
{
  "analyzer": "standard",
  "text": "Text to analyze"
}'

curl: (6) Couldn't resolve host 'GET' {"tokens":[{"token":"text","start_offset":0,"end_offset":4,"type":"","position":0},{"token":"to","start_offset":5,"end_offset":7,"type":"","position":1},{"token":"analyze","start_offset":8,"end_offset":15,"type":"","position":2}]}

Is this error influence the result ?

1
so what query do you execute that results the "wrong" result? - gitaarik
The query is showed in the code. It is: curl -XGET 'localhost:9200/my_index/my_type/_search' -d' { "query": { "match": { "title": "QUICK!" } } }' - chocolate9624
Did you try to search for just quick instead of QUICK!? Also, the last search you have GET two times in the curl command. - gitaarik
It is OK now! The problem is that I didn't set the "analyzer" for "title" index. When I set the "analyzer", full-text search works! Thank you very much! - chocolate9624

1 Answers

0
votes

It is OK now! The problem is that I didn't set the "analyzer" for "title" index. When I set the "analyzer", full-text search works! I should not believe the default analyzer.