我在ElasticSearch v1.2.1中有一些文档,如:
{
"tempSkipAfterSave": "false",
"variation": null,
"images": null,
"name": "Dolce & Gabbana Short Sleeve Coat",
"sku": "MD01575254-40-WHITE",
"user_id": "123foo",
"creation_date": null,
"changed": 1
}
Run Code Online (Sandbox Code Playgroud)
其中sku可以是一个变化,例如:MD01575254-40-BlUE,MD01575254-38-WHITE
我可以使用弹性搜索查询来处理这个问题:
{
"size": 1000,
"from": 0,
"filter": {
"and": [
{
"regexp": {
"sku": "md01575254.*"
}
},
{
"term": {
"user_id": "123foo"
}
},
{
"missing": {
"field": "project_id"
}
}
]
},
"query": {
"match_all": {}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了sku的所有变化: MD01575254*
然而,破折号' - '真的搞砸了我
当我将正则表达式更改为:
"regexp": {
"sku": "md01575254-40.*" …Run Code Online (Sandbox Code Playgroud) 我正在尝试将范围查询与elasticsearch一起使用
{
"query": {
"range": {
"order_no": {
"gte": "VM-0001",
"lte": "VM-0005"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但弹性返回没有结果。我发现系统有字符串包含-或的问题_
这是该字段的映射:
"order_no" : {
"type" : "string",
"index_analyzer" : "str_index_analyzer",
"search_analyzer" : "str_search_analyzer"
}
Run Code Online (Sandbox Code Playgroud)
{
"analysis": {
"analyzer": {
"str_search_analyzer": {
"tokenizer": "keyword",
"filter": [
"lowercase"
]
},
"str_index_analyzer": {
"tokenizer": "keyword",
"filter": [
"lowercase",
"substring"
]
}
},
"filter": {
"substring": {
"type": "nGram",
"min_gram": 1,
"max_gram": 20
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我对弹性搜索的java api有问题.
当我像这样搜索时:
MatchQueryBuilder query = QueryBuilders.matchQuery("_type", "booking");
SearchResponse searchResponse = client.prepareSearch().setQuery(query).execute().actionGet();
for (SearchHit hit : searchResponse.getHits()){
Map<String, SearchHitField> fields = hit.getFields();
System.out.println(fields.size());
}
Run Code Online (Sandbox Code Playgroud)
我在用:
elasticsearch java api 1.4.0 elasticsearch 1.4.0
我的数据看起来像
{
"_index": "bookings",
"_type": "booking",
"_id": "50245171",
"_score": 1,
"_source": {
"field1": "value1",
"field2": "value2",
"field3": "value3",
...
}
}
Run Code Online (Sandbox Code Playgroud) 我试图通过此链接将MYSQL集成到Windows 7上的ElasticSearch中
我已完成以下步骤:
1:
在C目录中下载和解压缩 https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.3.4.zip
2:
在CMD上运行此命令./bin/plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.3.4.4/elasticsearch-river-jdbc -1.3.4.4-plugin.zip
3:
从MYSQL网站下载MYSQL Connector mysql-connector-java-5.1.33.zip.
解压缩并复制mysql-connector-java-5.1.33-bin.jar文件.
将它放入C:\ elasticsearch-1.3.4\plugins\jdbc
我现在检查了插件目录中有两个文件
elasticsearch河-JDBC-1.3.4.4.jar
MySQL的连接器的Java-5.1.33斌
现在我尝试在CMD上执行此命令,我收到错误
curl -XPUT 'localhost:9200/_river/jdbc-1.3.4.4-d2e33c3/_meta' -d '{
"type" : "jdbc",
"jdbc" : {
"url" : "jdbc:mysql://localhost:3306/test",
"user" : "root",
"password" : "pass",
"sql" : "select * from abc"
}
}'
Run Code Online (Sandbox Code Playgroud)
{
"error": "MapperParsingException[failed to parse]; nested: JsonParseException[Unexpected character (''' (code 39)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: [B@3cf756; …Run Code Online (Sandbox Code Playgroud) 我的目标是构建一个索引,对于每个文档,将通过单词ngrams(uni,bi和tri)将其分解,然后捕获所有这些单词ngrams上的术语向量分析.Elasticsearch可以吗?
例如,对于包含"红色汽车驱动器"的文档字段.我将能够获得这些信息:
red - 1 instance
car - 1 instance
drives - 1 instance
red car - 1 instance
car drives - 1 instance
red car drives - 1 instance
Run Code Online (Sandbox Code Playgroud)
提前致谢!
处理标准ELK设置中写入ElasticSearch集群的日志消息激增的最佳方法是什么?
我们在AWS中使用标准ELK(ElasticSearch/Logstash/Kibana)设置来满足我们网站的日志记录需求.
我们在负载均衡器后面有一个自动缩放的Logstash实例组,该组记录到另一个负载均衡器后面的ElasticSearch实例的自动缩放组.然后我们有一个服务Kibana的实例.
对于日常业务,我们运行2个Logstash实例和2个ElasticSearch实例.
我们的网站在活动期间经历短时间的高流量 - 在这些活动期间,我们的流量增加了约2000%.我们提前知道这些事件.
目前,我们只是在事件期间临时增加ElasticSearch实例的数量.然而,我们遇到的问题是我们随后缩减得太快,这意味着我们丢失了碎片并损坏了我们的索引.
我一直在考虑将设置auto_expand_replicas设置为"1-all"确保每个节点都拥有所有数据的副本,因此我们无需担心扩展或缩小的速度.将所有数据传输到新节点的开销有多大?我们目前只保留大约2周的日志数据 - 总共大约50gb.
我还看到人们提到使用单独的自动缩放组的非数据节点来处理搜索流量的增加,同时保持数据节点的数量相同.这有助于处理繁重的情况,例如我之前提到过的事件吗?
我很难尝试使用 elasticsearch 构建查询。
我想查询类似的东西:
WHERE field_1 is 'match' $string OR field_2 is 'wildcard_match' $string OR field_3 is 'fuzzy' $string
Run Code Online (Sandbox Code Playgroud)
所以我试图构建的是这样的:
{
"bool" : {
"should" : [
{
"match" : { "field_1" : "testing" }
},
{
"wildcard" : { "field_2" : "*testing*" }
},
{
"fuzzy" : { "field_3" : "testing" }
}
],
"minimum_should_match" : 1,
}
}
Run Code Online (Sandbox Code Playgroud)
但这似乎返回一个错误。
任何人都可以指点我应该如何研究使用elasticsearch进行这种OR查询?
我当前的数据发送:
{
"_index": "twitter",
"_type": "tweet",
"_id": "1",
"_version": 1,
"found": true,
"_source": {
"field_1": "some data",
"field_2": …Run Code Online (Sandbox Code Playgroud) 我正在学习Elasticsearch所以我不确定这个查询是否正确.我已经检查过数据已编入索引,但我没有得到任何点击.我究竟做错了什么?难道这不会受到创造者名字史上的汽车的打击吗?
builder
.startObject()
.startObject("car")
.field("type", "nested")
.startObject("properties")
.startObject("creators")
.field("type", "nested")
.endObject()
.endObject()
.endObject()
.endObject();
{
"query": {
"bool": {
"must": [
{
"term": {
"car.creators.name": "Steve"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 50,
"sort": [],
"facets": {}
}
Run Code Online (Sandbox Code Playgroud) 我配置了Fortimail将其日志消息发送到Logstash,但是,当我查看kibana仪表板上的日志时.
我想拆就几个领域,如信息栏:time,device_id,from,to...
看到这张图:
我不知道如何继续自定义字段.
可以给我一些想法,知道要配置哪些文件?
我为我的学校项目制作了一个与 Firestore 一起运行的应用程序。当我添加第一个查询时没有问题,但如果我想添加第二个查询并返回到MainActivity,我会收到此错误并且应用程序终止。
E/AndroidRuntime: FATAL EXCEPTION: main\nProcess: com.caneraltuner.cepanket2, PID: 13240\njava.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionNoteHolder{f9f3667 position=2 id=-1, oldPos=0, pLpos:0 scrap [attachedScrap] tmpDetached no parent} androidx.recyclerview.widget.RecyclerView{c64d4da VFED..... ........ 0,0-1080,1584 #7f0801de app:id/recycler_view}, adapter:com.caneraltuner.cepanket2.NoteAdapter@2549b6d, layout:androidx.recyclerview.widget.LinearLayoutManager@8af93a2, context:com.caneraltuner.cepanket2.MainActivity@c95bf4d\n at androidx.recyclerview.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:6156)\n at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6339)\n at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6300)\n at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6296)\n at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2330)\n at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1631)\n at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1591)\n at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:668)\n at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:4255)\n at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:4010)\n at androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:2028)\n at androidx.recyclerview.widget.RecyclerView$1.run(RecyclerView.java:417)\n at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)\n at android.view.Choreographer.doCallbacks(Choreographer.java:796)\n at android.view.Choreographer.doFrame(Choreographer.java:727)\n at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)\n at android.os.Handler.handleCallback(Handler.java:938)\n at android.os.Handler.dispatchMessage(Handler.java:99)\n at android.os.Looper.loop(Looper.java:223)\n at android.app.ActivityThread.main(ActivityThread.java:7656)\n at java.lang.reflect.Method.invoke(Native …Run Code Online (Sandbox Code Playgroud) java android firebase android-recyclerview google-cloud-firestore