8

一致した結果を強調表示したい。これは、フィールド名を指定すると強調表示されたテキストが返される場合に機能しますが、フィールドに「_all」を指定すると、値が返されません。これは私のために働く:

        curl -XGET "http://localhost:9200/my_index/my_type/_search?q=stackoverflow&size=999" -d '{
        "highlight":{
                    "fields":{
                             "my_field":{}
                    }
        }
}'

これは次のような期待値を返します: [highlight] => stdClass Object ( [my_field] => Array ( [0] => stackoverflow is the best website for techies ) )

しかし、私がこれを与えるとき:

        curl -XGET "http://localhost:9200/my_index/my_type/_search?q=stackoverflow&size=999" -d '{
        "highlight":{
                    "fields":{
                             "_all":{}
                    }
        }
}'

null値/結果が得られません。

[highlight] => stdClass Object ( [_all] => Array () )

フィールド名に言及する必要がないように、どのフィールドでも機能させるにはどうすればよいですか?

4

4 に答える 4

28

_allインデックスに格納されたフィールドとして追加する必要を回避するには

別の簡単な修正:*の代わりに使用_all:

curl -XGET "http://localhost:9200/my_index/my_type/_search?q=stackoverflow&size=999" -d '{
  "highlight":{
    "fields":{
      "*":{}
    }
  }
}'
于 2014-05-16T05:01:13.870 に答える
5

_all フィールドを格納済みとしてマップする必要があります。以下のマッピングでうまくいくはずです。ただし、これによりインデックスのサイズが増加することに注意してください。

{
  "my_type": {
      "_all": {
        "enabled": true,
        "store": "yes"
      }
  }}
于 2011-12-05T16:36:52.277 に答える
-1

このライブラリには、すべてのフィールドのハイライトを含むクエリのハイライト機能があります。README では、_all フィールドが保存された Elasticsearch インデックスの作成方法について説明しています: https://github.com/niranjan-uma-shankar/Elasticsearch-PHP-class

于 2011-12-21T10:45:13.550 に答える