5

これは 2 部構成の質問です。

私のドキュメントは次のようになります。

{"url": "https://someurl.com", 
 "content": "searchable content here", 
 "hash": "c54cc9cdd4a79ca10a891b8d1b7783c295455040", 
 "headings": "more searchable content", 
 "title": "Page Title"}

私の最初の質問は、「タイトル」が正確に「タイトルなし」であるすべてのドキュメントを取得する方法です。「このドキュメントにはタイトルがありません」というタイトルのドキュメントを表示したくありません。

私の 2 番目の質問は、「url」が URLの長いリストに正確に表示されるすべてのドキュメントを取得する方法です。

私はpyelasticsearchを使用していますが、カールの一般的な答えも機能します。

4

3 に答える 3

10

フィールドのマッピングを定義する必要があります。

正確な値 (大文字と小文字を区別) を探している場合は、index プロパティを に設定できますnot_analyzed

何かのようなもの :

"url" : {"type" : "string", "index" : "not_analyzed"}
于 2012-10-12T22:16:18.443 に答える
3

ソースが保存されている場合 (デフォルト)、スクリプト フィルターを使用できます。

次のようになります。

$ curl -XPUT localhost:9200/index/type/1 -d '{"foo": "bar"}'
$ curl -XPUT localhost:9200/index/type/2 -d '{"foo": "bar baz"}'
$ curl -XPOST localhost:9200/index/type/_search?pretty=true -d '{
"filter": {
    "script": {
        "script": "_source.foo == \"bar\""
    }
}
}'
{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "index",
      "_type" : "type",
      "_id" : "1",
      "_score" : 1.0, "_source" : {"foo": "bar"}
    } ]
  }
}

編集:「not_analyzed」マッピングがより高速なアプローチであることに言及する価値があると思います。しかし、このフィールドの完全一致と部分一致の両方が必要な場合は、2 つのオプションがあります。スクリプトを使用するか、データを 2 回 (分析したら分析せずに) インデックス付けします。

于 2012-10-13T19:37:24.333 に答える