0

マッピングに、文字列の配列を保持する列があります

col1
["asd","fgh","wer"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk","fsdfd"]
["asd","trth","fdf"]

colはインデックスで分析されておらず、マッピングを変更したくありません。

"col1":
{
    "type":"string",
    "index":"not_analyzed"
}

今、文字列が表示されるすべてのレコードを取得したいと思いasdます。この場合、1 番目と 4 番目のレコードが必要です。クエリを使ってみた

        query: {

                    wildcard:{
                        "col1":"asd"
                    }
                }

POST localhost:9200/indexName/test/_search

しかし、それは私に空の結果をもたらしますか? この場合、どのクエリを使用すればよいですか?

編集

それで、上記の問題を解決することができました。ここにフォローアップがあります。これが私のデータだったと考えてください

col1
["asd fd","fgh bn","wer kl"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk wewe","fsdfd rtr"]
["asd","trth","fdf"]

そのため、配列には複数の単語を持つ文字列が含まれています。今でも、最初と 4 番目のレコードを返したいと思っています。投稿したソリューションを使用すると、4番目のソリューションしか取得できません。containsの配列の各要素にロジックを適用するにはどうすればよいcol1ですか?

ノート

部分的な解決策は

{ "query": { "match_phrase_prefix": { "col1": "asd" } } }

繰り返しますが、データについて

col1
["asd fd","fgh bn","wer kl"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk wewe","fsdfd rtr"]
["asd","trth","fdf"]

最初と 4 番目のレコードを返します。しかし、私が持っている場合

col1
["fd asd","fgh bn","wer kl"]
["qwer","cvbvbn","popop"]
["cvbml","fhjhfrjk wewe","fsdfd rtr"]
["asd","trth","fdf"]

その後、再び 4 番目のもののみが返されますが、これは理解できるようにasdなり、最初のレコードのその値のプレフィックスではなくなりました。

containsプレフィックスマッチだけでなく、タイプマッチにする方法はありますか?

4

2 に答える 2

2

簡単なtermクエリを使用でき、動作するはずです

POST localhost:9200/indexName/test/_search
{
    "query": {
        "terms": { "col1" : "asd" }
    }
}
于 2016-02-18T15:53:42.973 に答える
0

したがって、ここに適切なクエリがあります

{

                    fields : ["col1","col2"],
                    query: {
                        filtered: {

                          query: {
                            match_all: {}
                          },
                          filter: {
                            terms: {
                              col1: ["asd"]
                            }
                          }
                        }
                      }

                }

最終回答

    query: {

                wildcard:{

                  col1:{

                          value:"*asd*"
                       }
                }
            }

:)

于 2016-02-18T16:12:07.580 に答える