0

マルチパート フィールドの ARRAY を持つ型があります。そのフィールドのデータは次のようになります。

grp type num
111 ABC 112233445566
123 DEF 192898048901
222 ABC 180920948012
333 XWZ 112233445566

ドキュメントを見つけるために num だけで検索したい。また、タイプと num で検索してドキュメントを見つけられるようにしたいと考えています。オプションで 3 つすべてを含める: grp=111 type=ABC num=112233445566

私が望んでいないのは、これらの複合値のクロスマッチングです..IE、type = XWZおよびnum = 192898048901は偽のヒットになります

では、カスタム トークナイザを使用してこれらを multi_fields として実装しますか? (おそらく連結して 3 つのキー タイプを作成します)

または、単語 tokenfilter やその他の手法を組み合わせて、これを達成することができます。ティア

4

2 に答える 2

0

組み合わせを追加フィールドとして索引付けできます。

"doc" : {
    "properties" : {
...
        "array_type" : {
            "type" : "object",
            "properties" : {
                "grp" : { "type" : "integer", "index" : "not_analyzed"},
                "type" : { "type" : "string", "index" : "not_analyzed" },
                "num" : { "type" : "integer", "index" : "not_analyzed"" },
                "type_num" : { "type" : "string", "index" : "not_analyzed" },
                "grp_type_num" : { "type" : "string", "index" : "not_analyzed" },
                }
            },
...
    }
}

クエリを実行するときは、持っている情報と一致するフィールドを使用してください。たとえば、type と num を検索するには、次のようなクエリを記述できます。

{
  "size": 20,
  "from": 0,
  "query": {
    "filtered": {
      "filter": {
        "and": [
          {
            "term": {
              "type_num": "XWZ 112233445566"
            }
          }
        ]
      }
    }
  }
}
于 2013-09-24T20:01:58.567 に答える