1

強調表示されたelasticsearchの結果を機能させるのに問題があります。多くの例を見つけてさまざまなバージョンを試しましたが、自分のインデックスに適用できません。私は何が間違っているのですか?

これが私のテストスクリプトです:

init() {
    curl -XDELETE http://localhost:9200/twitter
    echo
    curl -XPUT http://localhost:9200/twitter
    echo

    curl -XPUT http://localhost:9200/twitter/tweet/_mapping -d '{
        "tweet" : {
            "properties" : {
                "user" : { "type" : "string" },
                "message" : {
                    "type" : "string",
                    "index": "analyzed",
                    "store": "yes",
                    "term_vector" : "with_positions_offsets"
                 }
            }
        }
    }'
    echo
    curl -XPOST http://localhost:9200/twitter/tweet -d '{
        "user": "kimchy",
        "message": "You know, for Search"
    }'
    echo
    curl -XPOST http://localhost:9200/twitter/tweet -d '{
        "user": "bar",
        "message": "You know, foo for Search"
    }'
    echo

    sleep 2
    echo '-------------------'
}

[ "$1" = "init" ] && init

curl -X GET 'http://localhost:9200/twitter/_search/?pretty=true' -d '{
    "query":{
            "query_string":{
                "query":"foo"
            }
        }
    },
    "highlight":{
        "pre_tags": "<b>",
        "post_tags": "</b>",
        "fields" : {
            "message" : {"number_of_fragments": 20}
        }
    }
}'

そしてここに出力:

{
  "took" : 4,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 0.09492774,
    "hits" : [ {
      "_index" : "twitter",
      "_type" : "tweet",
      "_id" : "1tgGWGhnRLy-nJIAunFeeQ",
      "_score" : 0.09492774, "_source" : {
        "user": "bar",
        "message": "You know, foo for Search"
    }
    } ]
  }
}%  

ご覧のとおり、highlightプロパティが完全に欠落しています。

4

1 に答える 1

3

クエリ部分に閉じ中括弧が多すぎます。

"query":{
        "query_string":{
            "query":"foo"
        }
    } <---- This one is not needed.
},

したがって、ハイライト部分はパーサーによって単に無視されます。

ちなみに、pre_tagspost_tagsは配列である必要があります。

curl "localhost:9200/twitter/tweet/_search?pretty=true" -d '{
    "query": {
        "query_string": {
            "query": "foo"
        }
    },
    "highlight": {
        "pre_tags": ["<b>"],
        "post_tags": ["</b>"],
        "fields": {
            "message": {"number_of_fragments": 20}
        }
    }    
}' 
于 2013-01-17T12:54:42.923 に答える